我不确定为什么以下代码段出现错误(改编自JavaScript closure inside loops – simple practical example):
var funcs = {};
for (var i = 0; i < 3; i++) { // let's create 3 functions
funcs[i] = (function(n) { // and store them in funcs
console.log("My value: " + n); // each should log its value.
})(i);
}
for (var j = 0; j < 3; j++) {
funcs[j](); // and now let's run each one to see
}
看来这应该运行正常;我知道这只是我不完全了解的事情。
这是我得到的错误:
感谢任何帮助
最佳答案
您需要返回一个函数,而不是该函数的结果。尝试:
funcs[i] = (function(n) {
return function() {
console.log("My value: " + n);
}
})(i);
例:
> var funcs = {};
for (var i = 0; i < 3; i++) {
funcs[i] = (function(n) {
return function() {console.log("My value: " + n);}
})(i);
}
for (var j = 0; j < 3; j++) {
funcs[j]();
}
My value: 0
My value: 1
My value: 2
关于javascript - 测试用立即函数重写一个简单的循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18407986/