深入瞭解JavaScript中的for循環–碼農網

這篇文章加深瞭對for循環的理解,尤其是對for-in的介紹,很詳細,很受教!

文章中一段對Array的介紹值得註意。JS中數組的“索引”值,0、1、2.。。。其實是數組對象的屬性,而且這些索引值並不是Number類型,而是String類型。特殊的一點是這些屬性隻能通過arr[“0”]這種方式引用。事實上,arr[0]和arr[“0”]這兩種方式寫法的結果也是一樣的。

Array 的真相

Array 在 Javascript 中是一個對象, Array 的索引是屬性名。事實上, Javascript 中的 “array” 有些誤導性, Javascript 中的 Array 並不像大部分其他語言的數組。首先, Javascript 中的 Array 在內存上並不連續,其次, Array 的索引並不是指偏移量。實際上, Array 的索引也不是 Number 類型,而是 String 類型的。我們可以正確使用如 arr[0] 的寫法的原因是語言可以自動將 Number 類型的 0 轉換成 String 類型的 “0″ 。所以,在 Javascript 中從來就沒有 Array 的索引,而隻有類似 “0″ 、 “1″ 等等的屬性。有趣的是,每個 Array 對象都有一個 length 的屬性,導致其表現地更像其他語言的數組。但為什麼在遍歷 Array 對象的時候沒有輸出 length 這一條屬性呢?那是因為 for-in 隻能遍歷“可枚舉的屬性”, length 屬於不可枚舉屬性,實際上, Array 對象還有許多其他不可枚舉的屬性。

發佈留言