2 回答

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

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