繁体   English   中英

有人可以向我解释为什么这种语法使用括号而不是大括号,添加逗号并且在 reduce 方法中不再有“return”吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM