JS,reduce方法中第一个参数回调函数的return的值具体代表什么?
看到一个 reduce
的高级用法
function Reverse(arr = []) {
return arr.reduceRight((accumulator, currentValue) => (t.push(currentValue), accumulator), [])
}
Reverse([1, 2, 3, 4, 5]) // [5, 4, 3, 2, 1]
就是用 reduce
来实现 reverse
方法
已知 accumulator : 累计器累计回调的返回值; 它是上一次调用回调时返回的累积值
这段话是MDN中所描述的
但是这里箭头函数return的 (t.push(v), t)
,我始终没看明白是个什么意思?
为什么不是直接 return t.push(v)
呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
t.push(i) 返回值是 i
(t.push(i), t) 返回值是 t
知识点1:箭头函数直接表达返回值, a => !a,箭头后面直接提供一个表达式当做箭头函数的返回值
知识点2:逗号运算符,(1,2,3)该表达式的求值为最后一个逗号后面的表达式求值,即 a = (1,2)结果a的值为2。
知识点3:reduceRight,反向缩合,从最后一个元素调用缩合函数,缩合函数的第一个参数是暂时的撮合结果,第二个值是遍历元素。
你的源码应该是
缩合结果是一个数组,缩合函数相当于
反向缩合动作记录元素不就相当于获取原数组的反序列。注意,原始数组并没有翻转,reverse方法会修改原数组。在注意:一般来说手动写代码不推荐使用逗号运算符,可读性不高而且容易犯错。编译后代码无视
你好,首先t没有定义,我觉得你应该想表达的是
然后
t.push(v) 假定这里t是数组 数组 push 方法返回 push后数组的长度,return 回去显然不满足需求