[英]Are there differences between [...array].map(...) and [...array.map(...)] in JavaScript?
我不太明白[...array].map(...)
和[...array.map(...)]
之間的區別。 他們有什么不同嗎? 如果是,為什么以及如何?
[...array].map(...)
將生成一個新的數組淺表副本( [...array]
),然后在其上.map
並返回一個全新的數組作為返回值。[...array.map(...)]
將.map
覆蓋在原始數組上,這將返回一個新數組,然后立即制作新數組的淺表副本( [...array.map(...)]
)。 我必須承認,我並不真正理解這種方法的用例——因為.map
本身正在返回一個全新的數組,沒有其他變量應該引用它,我看不出立即轉換的任何價值它的淺拷貝。 (此外,正如chazsolo在評論中指出的那樣,如果array
不是數組,但實際上是其他類型,例如Set
,則[...array.map(...)]
方法實際上會引發錯誤,因為Set
實例沒有.map
方法)。
那么[...array.map(...)]
與array.map(...)
相同,只是它在映射完成后會進行額外的不必要的傳播/復制。
由於在 map (它自己的數組)中傳遞了第三個參數, [...array].map(...)
有一個小的差異。
正如@chazsolo 在另一條評論中提到的那樣,這種情況將處理array
變量不是數組的情況,因此它沒有map
方法,但可以迭代並且傳播將創建一個數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.