當前位置:
首頁 > 知識 > JavaScript 之Array 你真的了解嗎?

JavaScript 之Array 你真的了解嗎?

JavaScript 之Array 你真的了解嗎?

歡迎關注

莎士比亞曾說:

你這是披著羊皮的狼,我要把你趕走。

數組是一段線性分配的內存,它通過整數計算偏移並訪問其中的元素。數組是一種性能出色的數據結構。不幸的是,JavaScript沒有像此類數組一樣的數據結構。作為替代,JavaScript提供了一種擁有一些數組(array-like)特性的對象。它把數組的下標轉變成字元串,用其作為屬性。它明顯地比一個真正的數組慢。但使用起來更方便。它的屬性的檢索和更新的方式與對象一模一樣,只不過多一個可以用整數作為屬性名的特徵。


數組字面量

數組字面量提供了一種非常方便地創建新數組的表示法。一個數組字面量是在一對方括弧中包圍零個或多個用逗號分隔的值的表達式。數組字面量允許出現在任何表達式可以出現的地方。數組的第一個值將獲得屬性名"0",第二個值將獲得屬性名"1"。依次類推:

JavaScript 之Array 你真的了解嗎?

歡迎關注

再來看一下對象字面量:

JavaScript 之Array 你真的了解嗎?

歡迎關注

兩者產生了一者的結果!numbers和numbers_object都是包含10個屬性的對象,並且那些屬性剛好有相同的名字和值。但是它們也有一些顯著的不同。numbers繼承自Array.prototype,而numbers_object繼承自object.prototype,所以numbers繼承了大量有用的方法。同時,numbers也有一個詭異的length屬性。而numbers_object則沒有!

在大多數語言中,一個數組的所有元素都要求是相同的類型,JavaScript允許數組包含任意混合類型的值。

JavaScript 之Array 你真的了解嗎?

夠混搭不?


沒有辦法證明自己是數組

JavaScript本身對於數組和對象的區別是混亂的,typeof 運算符報告數組的類型是"object",這沒有任何意義。JavaScript沒有一個好的機制來區別數組和對象。(ECMA-262已解決)。在原來可以通過定義自己的is_array函數來彌補這個缺陷:

JavaScript 之Array 你真的了解嗎?

最後同樣也以莎士比亞的一句來結尾:

它雖瘋,但卻有他的一套理論。


關注「教授學苑」,期待帶給你快樂的開發知識!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 教授學苑 的精彩文章:

JavaScript 代碼規範,自帶 linter & 代碼自動修正

TAG:教授學苑 |