【发布时间】:2015-11-09 05:59:02
【问题描述】:
我在 Toptal youtube 视频中看到了这个示例,该视频使用的语法无法在 Chrome 中运行,除非我遗漏了什么。这个例子出现在这里 (JavaScript closure inside loops – simple practical example) 并使用相同的语法。为什么这对我没有运行/下面指示的行是否包含有效的语法?
var x, y, funcs = [];
for(x=0; x<5; x++){
(function(){
var r = x;
funcs.push(function(){
console.log(r);
});
});
};
for (var y=0; y<5; y++){
funcs[y](); //<< is this valid JS syntax/why is it not working for me?
};
【问题讨论】:
-
究竟是什么不工作?
-
您将 y 声明为 [] 然后再次声明为索引,这可能无法按预期工作。在迭代您的数组并尝试在调试器中检查结果时,还要检索一个返回值。
-
问题不在于函数调用语法;没关系。问题是您的第一个
for循环没有在数组中放入任何内容。你有一个从未调用过的匿名函数,所以第一个循环什么都不做。
标签: javascript arrays function loops call