JS 陣列Array 屬性length 的真面貌 | javascript陣列長度
Day5一列隊伍有長度,也有各式各樣不同的物種,這才有趣嘛!length這個屬性應該算是我們在學Javascript的初期,最早開始用的一個屬性,我們常常來用它來當作是跑字串或陣列的迴圈條件,但是,作為Array的唯一屬性length真的有這麼單純嗎?我們可以從Chrome的開發工具的console裡,輸入window.Array.prototype可以找到它。並試著了解它多一點。先看一下MDN[1]對它的定義:作為Array類型的實例物件的length屬性,設置或回傳該陣列中的元素數。該值是一個無符號的32位整數,其數值總是大於陣列中的最高索引。嗯,解釋得很清楚,但好像單...
Day 5一列隊伍有長度,也有各式各樣不同的物種,這才有趣嘛!
length 這個屬性應該算是我們在學 Javascript 的初期,最早開始用的一個屬性,我們常常來用它來當作是跑字串或陣列的迴圈條件,但是,作為 Array 的唯一屬性 length 真的有這麼單純嗎?
我們可以從 Chrome 的開發工具的 console 裡,輸入window.Array.prototype 可以找到它。並試著了解它多一點。
先看一下 MDN[1] 對它的定義:
作為 Array 類型的實例物件的 length 屬性,設置或回傳該陣列中的元素數。 該值是一個無符號的32位整數,其數值總是大於陣列中的最高索引。
嗯,解釋得很清楚,但好像單薄了點。果然,查找了「JavaScript 大全」的解釋,把 length 解釋得較為詳細,且還講到了密集陣列(dense)和稀疏陣列(sparse),其中更強調了無論是以上哪種型態的陣列,length 的長度不會等於或小於陣列的最大索引值,也就是說 length 會比陣列最大的索引值多 1。但有個例外,就是空陣列。 廢話
這個其實不難理解,在許多程式語言裡,陣列的索引值都是從 0 開始算起,當然 JavaScript 也不例外。JavaScript 的 length 是從 1 開始,從下面這張圖片可以看出為什麼長度總比索引值大的原因。
怎麼使用 length ?別看 length 這個屬性,好像只能知道陣列的長度,但是如果知道怎麼活用它,會發現它的功用還不少。接下來介紹是幾種 length 的用法:
求陣列的長度只要在我們想知道的陣列變數,以方法的方式加上.length。回傳回來的就是這個陣列的長度。
let arr = ["hi","ho","woops","ciao"]; console.log(arr.length); // 4 把陣列清空這的確是個快速清空的方法,但是陣列在 JavaScript 裡,骨子裡是物件,也就是在記憶體裡,當我們宣告它時,也同時記...