Javascript 函数体中的返回运算符
有人能解释一下为什么函数在以下两种情况下表现不同吗?在第一个场景中,会提示错误,说明“arr.push不是函数” 情景1Javascript 函数体中的返回运算符,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
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中的操作相同