0

我不确定为什么在以下代码段中出现错误(改编自循环内的 JavaScript 闭包——简单实用的示例):

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
}

看起来这应该可以正常运行;我知道这只是我没有完全理解的东西。

这是我得到的错误: 在此处输入图像描述

谢谢任何帮助

4

1 回答 1

2

您需要返回一个函数,而不是函数的结果。尝试:

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
于 2013-08-23T16:53:04.087 回答