这个apply函数,我不能理解结果为什么是1,而不是乘积?

var data = [3,4,2,1]
   function multiply(arr){
       var result = 1;
       for(var i=0;i<arr.length;i++){
     console.log(arr[i]);      
     result = result*arr[i]
       }
       console.log(result);
   }   
   multiply.apply(window,data)
阅读 2.5k
3 个回答

因为arr是data[0], 如果要返回乘积, 应该把循环的arr改为arguments(非严格模式)

apply接受的是数组,但是传到函数里面是打散的参数,这样做相当于

multiply(data[0], data[1], data[2], data[3]);

所以你觉得返回值会是多少?
你这个完全没有必要用apply,直接multiply(data)就可以了。。。。。。

如果想要是乘积的话,需要把apply改成call

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题