首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数体中的返回运算符机制

函数体中的返回运算符机制
EN

Stack Overflow用户
提问于 2021-04-03 14:24:06
回答 1查看 16关注 0票数 0

有人能解释一下为什么函数在以下两个场景中表现不同吗?在第一个场景中,会出现错误提示'arr.push不是一个函数‘。

场景1

代码语言:javascript
复制
const arr = [1, 3, 11];

const doubled = arr.reduce((doubledArr, item) => {
   return doubledArr.push(item * 2);
}, []);

console.log(doubled);

场景2

代码语言:javascript
复制
const arr = [1, 3, 11];

const doubled = arr.reduce((doubledArr, item) => {
   doubledArr.push(item * 2);

   return doubledArr
}, []);

console.log(doubled);
EN

回答 1

Stack Overflow用户

发布于 2021-04-03 14:33:54

在第一个场景中,您返回Array.push()的结果,这是在其上调用该方法的对象(累加器array)的新length property。在Array.reduce()的下一次迭代中,此number将作为累加器提供,您将再次尝试将一个值推送到它。因为它不再是一个array而是一个number,所以您会得到错误arr.push is not a function

Array.reduce()回调应该始终返回累加器,与场景2中的操作相同。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66928297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档