我在Kyle Simpson的@ kyle-simpson书Functional-Light JavaScript中看到了以下JavaScript,并对其语法的一部分感到好奇:
const double = v => v * 2;
const reducer = (list, v) => (list.push(double(v)), list);
var doubled = [1, 2, 3, 4, 5].reduce(reducer, []);
console.log(doubled);
//[2, 4, 6, 8, 10]
var reduced = reducer([3], 2);
console.log(reduced);
//[3, 6]
具体来说,我不确定reducer函数返回值周围的外括号的含义和用法:
(list.push(double(v)), list)
在括号中包装对象文字是一种从箭头函数隐式返回它的方法,但这似乎是不同的。
此外:
var val = (3, 2);
console.log(val);
//2
这似乎表明括号将返回其列表中的最后一个值,该值与reducer函数的签名匹配,但我不知道这个构造被调用了什么。
提前感谢您的回复。