鑑於此函數調用:返回函數數組:創建關閉
var funcs = obj.getClosures([2, 4, 6, 8], function(x) {
return x*x;
});
我有以下功能:
getClosures : function(arr, fn) {
var funcs = [];
var array = arr;
var i = 0;
var l = array.length;
(function(i, array) {
for (; i < l; i++) {
funcs[i] = function(i, array) {
return fn(array[i]);
};
}
}(i, array));
return funcs;
},
我希望能夠遍歷返回的數組和得到陣列中每個物品的平方根值如下:
for (var i = 0; i < arr.length; i++) {
funcs[i]();
}
每次通過的結果循環:4,16,36,64
不應該我的funcs數組在每個索引中都有函數引用,可以使用相關參數值輕鬆調用它們嗎?我哪裏做錯了?
我suprprised它做了一些事情。它應該拋出錯誤,因爲你不會傳遞任何參數給函數調用('funcs [i]()')。 –
如果提供更多或更少的參數,JavaScript不會產生錯誤。相反,它會忽略多餘的或者將缺少的設置爲「undefined」 – mishik
@mishik:如果你的評論是爲了迴應我的,即使你是正確的,如果'array'是undefined,array [i]'會拋出一個錯誤'(如果沒有參數傳遞的話就是這種情況)。 –