Javascript 函数体中的返回运算符

Javascript 函数体中的返回运算符,javascript,return,reduce,Javascript,Return,Reduce,有人能解释一下为什么函数在以下两种情况下表现不同吗?在第一个场景中,会提示错误,说明“arr.push不是函数” 情景1 const arr = [1, 3, 11]; const doubled = arr.reduce((doubledArr, item) => { return doubledArr.push(item * 2); }, []); console.log(doubled); 情景2 const arr = [1, 3, 11]; const double

有人能解释一下为什么函数在以下两种情况下表现不同吗?在第一个场景中,会提示错误,说明“arr.push不是函数”

情景1

const arr = [1, 3, 11];

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

console.log(doubled);
情景2

const arr = [1, 3, 11];

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

   return doubledArr
}, []);

console.log(doubled);

在第一个场景中,返回的结果,它是调用该方法的对象(累加器
数组
)的新结果。在的下一次迭代中,此编号将作为累加器提供,您将再次尝试向其推送值。由于它不再是一个
数组
,而是一个
数字
,因此会出现错误
arr.push不是一个函数


回调应始终返回累加器,与场景2中的操作相同。

在第一个场景中,返回的结果是调用该方法的对象(累加器
数组
)的新结果。在的下一次迭代中,此编号将作为累加器提供,您将再次尝试向其推送值。由于它不再是一个
数组
,而是一个
数字
,因此会出现错误
arr.push不是一个函数

回调应该始终返回累加器,与场景2中的操作相同