var mult = (function(){
var cache = {};
var calculate = function(){
var a = 1;
for(var i = 0, l = arguments.length; i < l; i++){
a = a * arguments[i];
}
return a;
}
return function(){
return calculate(arguments);
}
})();
console.log(mult(1, 2));
上面是我的代码,我希望mult函数会给我2值,但它会输出NaN。我将行calculate(arguments)
更改为caculate.apply(null, arguments)
并且有效。我不知道为什么旧代码不起作用?为什么我需要在这种情况下使用申请? null
代表什么?
答案 0 :(得分:3)
您的calculate
函数需要单独的参数,但您传入的是array 1 。使用.apply
为您传播数组内容。
1 从技术上讲,类似于arguments
的对象不会从Array
继承。