假设给定一个函数(它是对象的一部分,别担心)
makeClosures : function(arr, fn) {},
其中参数首先是一个数组,例如[1, 2, 3, 4]
,其次是一个对给定数字求平方的函数(称为 doSomeStuff)
var doSomeStuff = function (x) { return x * x; }
makeClosures
应该返回一个与 大小相同的数组arr
,其中每个元素都包含对基本上调用doSomeStuff
.
所以这是我的实现:
makeClosures : function(arr, fn) {
var funcs = [];
for (var i = 0; i < arr.length; i++) {
var f = function() {
return fn(arr[i]);
};
funcs.push(f);
}
return funcs;
},
问题是:
当我运行我的程序时,返回f
值为NaN
. 我尝试使用实际数字(return fn[1]
, return fn(arr[0])
)然后它起作用了,这意味着问题出在arr[i]
(未定义?)。我怀疑内部函数f
没有看到循环索引i
。为什么?