酷播亮新聞
最棒的知識補給站

JavaScript中,有關陣列的「空插槽」和undefined,務必要注意這些

文章摘要: 分兩段程式碼來講第一段程式碼如下:這段程式碼我依次給a[0],a[1],a[2],a[9]分別定義三個值1,2,3,99。

點選右上方紅色按鈕關注「小鄭搞碼事」,每天都能學到知識,搞懂一個問題!

今天這篇來搞一個輕鬆一點話題,就是有關陣列的空插槽和undefined我們需要注意些什麼。分兩段程式碼來講

這段程式碼我依次給a[0],a[1],a[2],a[9]分別定義三個值1,2,3,99。這樣的話陣列a會發生什麼呢?

先看一下a輸出什麼:

就如我們看到的,JavaScript引擎將使陣列插槽3至8成為「空插槽」(emptyx6)。

那麼console.log(a[6])輸出什麼呢?

輸出:undefined

沒錯,在這裏,a [6]將輸出未定義的值,但時隙仍為空,而不是未定義的。

其實這個undefined和空插槽還是有些差別,在使用上要特別注意,看第二段程式碼。

如上面這段程式碼,先看這個時候b的輸出:

b[0]是undefined。除b[3]為2其它都是”空插槽”。這種情況,我們用map來處理一下,看看會發生什麼。

輸出結果:

由此可見,使用map()時,map()的輸出中的空插槽將保持為空,但未定義的插槽將使用傳遞給它的函式重對映。這個地方可以理解為,未定義是已經宣告存在,空是沒宣告不存在。這點區別要記住。

最後總結:

在使用陣列時,有關陣列的”空插槽”和undefined,務必關注一下。

如有侵權請來信告知:酷播亮新聞 » JavaScript中,有關陣列的「空插槽」和undefined,務必要注意這些