我的代码:
let ret={sum:0}
const sum = [1, 2, 3, 4].reduce((prev, cur)=>{
prev.sum += cur
return prev
},ret)
高手写的代码:
let ret={sum:0}
const sum = [1, 2, 3, 4].reduce((prev, cur)=>(prev.sum += cur,prev),ret)
这里我有两个地方不明白:
1:为什么(prev.sum += cur,prev)和{ prev.sum += cur;return prev } 是等效的?
2:为什么const sum = [1, 2, 3, 4].reduce((prev, cur)=>(prev.sum += cur,prev),ret) 这句去掉“const sum = ”就报:“TypeError: Cannot read property 'reduce' of undefined”?
首先 这样也是可以运的
报错是因为你上面的
let ret={sum:0}
省略的行尾的分号导致的。再来说这一段,在箭头函数中,这样写就相当于是。
因为 逗号操作符 - JavaScript | MDN 的原因,所以总是返回右边的内容。
即相当于