JavaScript范围问题,嵌套函数中的var访问未定义
JavaScript scope issue, var access in nested function is undefined
我下面有一个简单的JavaScript块(已剥离),来自我正在处理的一个使用Node.js和Request的项目。
在我向控制台写入的第三个实例中,我无法理解为什么变量xxx
是undefined
。我知道这是一个作用域问题,但我认为像这样的嵌套函数可以访问其父作用域中的变量。
我确信我误解了范围,因为它与这个场景有关。有人能向我解释一下是什么阻止了对这个变量的访问吗?也许还有一个建议,告诉我如何将这个变量传递到这个函数中使用?
更新-下面的逐字代码:
在下面的情况中,groups
在顶部定义,是根级别的变量。
(function getListings() {
for (var i = 0; i < groups.length; i++) {
console.log("1: " + JSON.stringify(groups[i]));
var listingReqOptions = { url: format(listingsEndpoint, { "groupID": groups[i][1], "listingID": groups[i][0] }) };
console.log("2: " + JSON.stringify(groups[i]));
request(listingReqOptions, function (error, response, body) {
console.log("3: " + JSON.stringify(groups[i]));
if (!error && response.statusCode == 200) {
var channel = format(listingsChannelTemplate, { "groupID": groups[i][1], "listingID": groups[i][0] });
console.log("adding channel: " + channel);
listingChannels[channel] = JSON.parse(body);
}
else {
console.log("An error occurred while retrieving listing data: " + JSON.stringify(response));
}
});
}
// Loop
setTimeout(getListings, 3000);
})();
试试这个,在上下文切换的情况下,这更安全:
var xxx = "HEY LOOK AT ME";
console.log(xxx); // <-- "HEY LOOK AT ME"
var opts = { url: "http://example.com/foobaz" };
console.log(xxx); // <-- "HEY LOOK AT ME"
request(opts, function(e) { return function (error, response, body) {
console.log(e);
if (!error && response.statusCode == 200) {
// stuff happens here
}
}}(xxx));
相关文章:
- Javascript属性访问速度:var.properties与var[“属性”]的区别
- Jquery - 为什么我不能在 $.ajax 中访问/设置我的 var
- 如何编写函数 y 接受参数fct_x,它访问需要在函数 y 中定义的 var-a
- 无法访问 GET 函数之外的 var
- 如何在 Greasemonkey 中访问本地 JavaScript var
- 从模块函数显式访问模块 var 以揭示模块模式
- JavaScript范围问题,嵌套函数中的var访问未定义
- 如何从javascript中的子函数访问var
- 从函数外部访问和更改var的值
- 如何访问css,如:--paper-spinner-layer-1-color:var(--paper-light-bl
- 如何使用var访问json对象属性
- 在另一个文件中的函数中访问var函数
- 在动态加载的脚本中访问Google ga var
- 不能使用getElementById和var访问id
- Jquery插件访问var从方法使用原型
- 将innerHtml的访问器存储为var
- Backbonejs-在集合中,我们如何从initialize函数访问this.var
- 从外部(即定义闭包的作用域)访问闭包内部定义的var
- 在模板angular 2中访问javascript var
- 思维扭曲暗示了这一点.var访问