函數multiply
傳遞一個回調函數「addOne」。函數乘法返回[3,5,7]。JavaScript「參數」 - 通過其他參數傳遞函數
由於回調函數addOne是函數乘法的參數之一,並且由於函數乘法的參數全部乘以2,爲什麼回調函數本身(即addOne)乘以2?換句話說,我不希望函數返回,因爲函數不是一個數字,而是函數返回[3,5,7]
。
JavaScript解釋器是否知道不會將它乘以2?
function addOne(a) {
return a + 1;
}
function multiply(a,b,c, callback) {
var i, ar = [];
for (i = 0; i < 3; i++) {
ar[i] = callback(arguments[i] * 2);
}
return ar;
}
myarr = multiply(1,2,3, addOne);
myarr;
o耶,謝謝。 – mjmitche 2011-04-14 06:40:55
我通常知道「call」是什麼,但是能否解釋它在您編寫的示例代碼中的工作原理。謝謝。 – mjmitche 2011-04-15 00:08:45
@mjmitche'arguments'變量是一個對象,而不是一個數組,雖然它公開了一些類似數組的屬性。爲了能夠調用'shift()',我們需要它作爲一個真正的數組。爲此,我們可以使用'call()'將對象作爲'this'傳遞給參數數組,調用'Array'的'slice()'。在不帶參數的情況下使用'slice()'時,它會將對象的副本作爲數組返回(或者如果在標準數組上使用數組的副本)。 – alex 2011-04-15 00:11:18