我從幾頁中讀取的密集數組的解釋似乎彼此矛盾。我想要了解它是什麼。究竟是密集陣列?
雖然一些鏈路(search result 1,search result 2)表明,它簡單地是當陣列:
- 所述陣列的元件是已知的特定值;並且
- 在其初始化時被分配給該陣列。
典型的說法是JavaScript數組很密集。
這一切都有道理,直到這裏。
但是從JavaScript Guide on the Mozilla Developer Network (MDN)採取這一聲明說:
由於陣列的長度可以在任何時間改變,並且數據可被存儲在所述陣列中的非連續位置,JavaScript數組是 不保證密集;這取決於程序員如何選擇 來使用它們。一般而言,這些都是方便的特點;但如果 這些功能不適合您的特定用途,那麼可以考慮使用類型化數組。
這讓我感到困惑。我的問題是:
當MDN頁面上的聲明表示JavaScript數組不保證密集時,它是什麼意思?如果這意味着以下內容不是密集數組,因爲它的一個或多個元素在初始化時爲undefined
,那麼爲什麼上面列出的鏈接似乎表明JavaScript數組確實密集?
var array = new Array(1, , 3,); // [1, undefined, 3, undefined]
數組初始化的方式是無關緊要的,它現在*的數組*狀態是重要的。一個給定的數組是否是密集的可以在數組的壽命中改變:'var arr = [1,2,3,4]'創建一個密集數組,但是如果你繼續說'arr [ 20] = 20'現在你有一個稀疏的數組。 – nnnnnn
@nnnnnn謝謝,我明白了。作爲每個元素的隱喻密集都有價值,因此需要記憶。 –
這是無效的語法,順便說一下:'new Array(1,,3,)'。你可能會把它與[1,3,]混淆。 – 2016-08-19 03:23:08