我做了一些研究后放弃了这一点。我的问题如下:Javascript关闭与循环
从post,我了解以下代码。
var funcs = {};
for (var i = 0; i < 3; i++) { // let's create 3 functions
funcs[i] = function() { // and store them in funcs
var item = "item" + i; // inside
console.log("item: " + item + ", i: " + i); // each should log its value.
};
}
for (var j = 0; j < 3; j++) {
funcs[j](); // and now let's run each one to see
}
Result:
item: item3, i: 3
item: item3, i: 3
item: item3, i: 3
但如果我更改移动var item = "item" + i
之外的功能(),结果会有所不同。为什么是这样?
var funcs = {};
for (var i = 0; i < 3; i++) { // let's create 3 functions
var item = "item" + i; // outside
funcs[i] = function() { // and store them in funcs
console.log("item: " + item + ", i: " + i); // each should log its value.
};
}
for (var j = 0; j < 3; j++) {
funcs[j](); // and now let's run each one to see
}
Result:
item: item2, i: 3
item: item2, i: 3
item: item2, i: 3
真正的问题是你的声明和'i'变量的用法。它保持在最高级别的范围内,但是您可以在关闭中使用它。当你“关闭”,现在让我们跑......“。那么'i'变量(用于for(;;)将会完成它的循环并且显示值 – 2014-11-01 09:38:44