复习数组的reduce方法时,偶然碰到的一个问题,起初以为是es6箭头函数的写法,查了mdn文档,也没找到。后来才发现是js的逗号运算符(哭...)
const objLikeArr = [["name", "Jim"], ["age", 18], ["single", true]];
const fromPairs = pairs =>
pairs.reduce((res, pair) => (res[pair[0]] = pair[1], res), {});
fromPairs(objLikeArr); // {name: "Jim", age: 18, single: true}
// 等价于下面的代码
const objLikeArr = [["name", "Jim"], ["age", 18], ["single", true]];
const fromPairs = pairs =>
pairs.reduce((res, pair) => {res[pair[0]] = pair[1];return res}, {});
fromPairs(objLikeArr);
关于逗号运算符的输出结果优先级,总是输出最后一项,请见下面的例子:
alert(3,4) // 3
alert((3,4)) // 4
var func = x => (x * x, 45);
func(5) // 45