我在使用總和函數時遇到了困難,該函數調用了Eloquent Javascript (Chapter 6)的匿名函數代碼示例,但我明白在這個post上澄清了什麼,我真的不明白匿名函數被調用。在Eloquent Javascript中解釋匿名函數代碼示例第6章
從我明白這個代碼:
function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
function sum(numbers) {
var total = 0;
forEach(numbers, function (number) {
total += number;
});
return total;
}
alert(sum([1, 10, 100, 1000]));
與此類似代碼(感謝來自@CKKiller在其他線程的援助):
numbers = [1, 10, 100, 1000];
for (var i = 0; i < numbers.length; i++) {
var number = numbers[i];
function (number) {
total += number;
}
}
alert(total);
但我不能運行第二個代碼示例,它有什麼問題?根據我的理解,不可能調用語法函數(number){},但不是第一個示例指示函數執行什麼操作?
或者如果你感覺很勇敢,你可以做'new function(){}' – Eric
Sho我們需要指出的是,問題中顯示的'number'參數需要刪除,因爲它會影響'number'變量,否則需要將'number'作爲參數傳遞給IIFE。 –