2 回答

TA貢獻1772條經驗 獲得超5個贊
一步步:
Array(rating)
創(chuàng)建一個空元素數組rating
,因此如果rating
is3
,則Array(rating)
返回[empty, empty, empty]
。[empty, empty, empty].fill()
返回[undefined, undefined, undefined]
,因為在 JavaScript 中,不能為map()
空值。這是 JavaScript 中有點奇怪的部分,但它就是這樣。現在,
[undefined, undefined, undefined].map((_, i) => ( <p>?</p> ))
將您的數組轉換為[<p>?</p>, <p>?</p>, <p>?</p>]
,這不是有效的 JavaScript,但我假設您正在使用 React 和 JSX。它將被編譯為 HTML 段落元素數組,每個元素的文本都帶有 ?。
當您使用帶有像這樣的大括號內的表達式的 JSX 時,它將成為您的輸出。
因此,此代碼片段將輸出<p>?</p><p>?</p><p>?</p>
或任意數量的段落,具體取決于rating
值。

TA貢獻1890條經驗 獲得超9個贊
讓我們一步一步來。node通過在終端中打開控制臺來跟蹤您的計算機可能會有所幫助。
將整數 ( rating) 轉換為數組將返回一個長度為rating-length 的數組。
> Array(5)
[ <5 empty items> ]
如果rating是 5,我們現在有一個長度為 5 的數組,但這還沒有那么有用,因為數組長度在 Node 中是動態(tài)的。
我們稱其.fill()為一個方法,它將用您傳遞的任何內容填充數組中的所有條目。在本例中,我們沒有傳遞任何內容,因此它是未定義的:
> Array(5).fill()
[ undefined, undefined, undefined, undefined, undefined ]
接下來,我們調用this函數map,該函數創(chuàng)建一個新數組,其中填充了對調用數組中每個元素調用所提供函數的結果。
在您的示例中,我們正在創(chuàng)建一個帶有兩個參數的新匿名函數。當map在數組上調用時,第一個參數是數組中項目的索引(我們不使用它,因此在這種情況下,我們用下劃線指示該參數未使用_)。第二個參數是該數組中的實際項目(正如我們之前所說,所有 5 個項目都未定義)。
因此,新創(chuàng)建的數組 frommap被填充為rating-length ,其中包含<p>標簽封裝的星形表情符號
> let rating = 5
undefined
> Array(rating).fill().map((_, i) => ( '<p>?</p>' ))
[ '<p>?</p>', '<p>?</p>', '<p>?</p>', '<p>?</p>', '<p>?</p>' ]
添加回答
舉報