函数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