当像这样乘以数字数组时,我得到了预期的输出: const numbers = [2, 5, 3]; return numbers.reduce((a, b) => a * b);但是,当我最初编写我的 reduce 语句(如下所示)时,我得到了“未定义”的输出。我认为这与我为 reduce 播种的值 0 有关。return numbers.reduce((a, b) => { a * b; }, 0);我不完全理解“未定义”作为输出发生了什么。如果有人能在这方面启发我,我将不胜感激。
2 回答
![?](http://img1.sycdn.imooc.com/54586653000151cd02200220-100-100.jpg)
守着一只汪
TA贡献1872条经验 获得超3个赞
在第二种形式中,您{}在箭头函数中使用花括号,它没有隐式return. 如果使用花括号,您需要明确 return:
const numbers = [2, 5, 3];
const test = numbers.reduce((a, b) => {
return a * b;
}, 0);
console.log(test);
编辑
正如在各种评论中指出的那样,这解决了结果为 的问题undefined,但仍将是0因为您将初始值播种为0,并且0乘以任何事物0。您可以简单地省略它(或用 替换它1)以获取返回的数组中所有项目的乘积:
const numbers = [2, 5, 3];
const test = numbers.reduce((a, b) => {
return a * b;
});
console.log(test);
添加回答
举报
0/150
提交
取消