簡體   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