Javascript Reduce函数不工作

Javascript Reduce函数不工作,javascript,apply,reduce,arrow-functions,Javascript,Apply,Reduce,Arrow Functions,我正在尝试使用高阶函数,试图成为一名更好的javascript开发人员 我从下面的代码中得到的错误是TypeError:myArray.reduce不是一个函数我发誓我遵循的是正确的设计模式 function myFunction(myArray) { return myArray.reduce((prev, curr) => prev * curr); } var myArray = [3, 2, 3] var myObject = myFunction.apply(myObje

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

我从下面的代码中得到的错误是
TypeError:myArray.reduce不是一个函数
我发誓我遵循的是正确的设计模式

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?
您希望使用而不是

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

使用此简单脚本,您可以看到以下效果:

函数myFunction(){
log(参数);
}
var myArray=[3,2,3];
调用(null,myArray);
/*
将发出回声{
"0": [
3.
2.
3.
]}
第一个变量将包含整个数组
*/
myFunction.apply(null,myArray);
/*
将发出回声{
"0": 3,
"1": 2,
"2": 3
}
第一个变量是3,第二个变量是2,第三个变量是3
*/
您希望使用而不是

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

使用此简单脚本,您可以看到以下效果:

函数myFunction(){
log(参数);
}
var myArray=[3,2,3];
调用(null,myArray);
/*
将发出回声{
"0": [
3.
2.
3.
]}
第一个变量将包含整个数组
*/
myFunction.apply(null,myArray);
/*
将发出回声{
"0": 3,
"1": 2,
"2": 3
}
第一个变量是3,第二个变量是2,第三个变量是3
*/
而不是使用

var myObject = myFunction.apply(myObject, myArray);
使用

因为function.prototype.apply方法将数组的每个项作为参数。myArray参数变为3、2、3,因此它的行为类似于您的函数使用了3个参数。

而不是使用

var myObject = myFunction.apply(myObject, myArray);
使用


因为function.prototype.apply方法将数组的每个项作为参数。myArray参数变为3、2、3,因此它的行为就像您的函数使用了3个参数一样。

为什么不简单地
var myObject=myFunction(myArray)?您使用的浏览器/版本是什么?我知道我们看到chrome 44不支持=>但47或48支持=>。@阿尔诺我正在尝试使用应用、箭头函数和reduce模式。@klog我使用的是v52。@ChrisClark很公平。然后您应该使用
myFunction.apply(myObject[myArray])
为什么不简单地使用
var myObject=myFunction(myArray)?您使用的浏览器/版本是什么?我知道我们看到chrome 44不支持=>但47或48支持=>。@阿尔诺我正在尝试使用应用、箭头函数和reduce模式。@klog我使用的是v52。@ChrisClark很公平。然后您应该使用
myFunction.apply(myObject,[myArray])
或者,
myFunction.apply(myObject,[myArray])
@ChrisClark more reading->或者,
myFunction.apply(myObject,[myArray])
@ChrisClark more reading->