Javascript减少功能不起作用

时间:2016-08-11 17:22:40

标签: javascript apply reduce arrow-functions

我正在尝试使用更高阶的函数,试图成为更好的javascript开发人员。

我从下面的代码中得到的错误是TypeError: myArray.reduce is not a function我发誓我正在遵循正确的设计模式。

function myFunction(myArray) {
    return myArray.reduce((prev, curr) => prev * curr);
}
var myArray = [3, 2, 3]
var myObject = myFunction.apply(myObject, myArray); // Will each element in array be multiplied?

1 个答案:

答案 0 :(得分:4)

您想使用.call代替.apply

.call将传入每个对象并将它们直接传递给函数,而.apply将获取一组参数并将它们作为每个单独的变量传递。

您可以使用以下简单的脚本查看下面的效果:



function myFunction() {
    console.log(arguments);
}
var myArray = [3, 2, 3];

myFunction.call(null, myArray);
/*
 Will echo out {
   "0": [
    3,
    2,
    3
 ]}
 
 The first variable will contain the entire array
*/

myFunction.apply(null, myArray);
/*
 Will echo out {
  "0": 3,
  "1": 2,
  "2": 3
 }
 
 The first variable will be 3, the second 2, and the third 3
*/