[英]Can someone explain to me why this syntax using parentheses instead of curly brackets, adding comma and no more “return” in reduce method?
我有一个快速的问题,我认为这与换行符或其他东西有关,但我找不到答案或发布。 这是一个使用reduce()
方法的示例。
这是我通常做或看到的:
const unique = ['a','b','c','a''a','a','b'];
unique.reduce((acc, val)=> {acc[val]=(acc[val]||0)+1; return acc;}, {}); //{ a: 4, b: 2, c: 1 }
但是,我们也可以使用这种语法:删除大括号 & return
,改用括号并在acc
之前添加一个,
。 有人可以向我解释这种语法吗?
unique.reduce((acc, val)=> (acc[val]=(acc[val]||0)+1, acc), {}); // { a: 4, b: 2, c: 1 }
这是因为您的示例中使用了逗号运算符。 来自MDN:
逗号运算符(
,
) 计算其每个操作数(从左到右)并返回最后一个操作数的值。
在(acc[val]=(acc[val]||0)+1, acc)
中,逗号正是这样做的,它首先执行 left 部分然后返回acc
。
更新:用大括号替换括号将不起作用,因为它不符合 JS 箭头 function 语法。 来自 MDN 上的Arrow function文章:
如果正文需要额外的处理线,您需要重新引入括号加上“返回”
所以return
需要大括号,而括号是一个简洁的箭头 function ,不需要return
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.