我正在尝试使用更高阶的函数,试图成为更好的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?
答案 0 :(得分:4)
.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
*/