JavaScript 中的For-In 迴圈與物件屬性順序
使用「for...in」循環迭代物件的屬性時,很自然地想知道遍歷的順序是否與原始聲明的順序相符。
根據 John 的說法Resig,過去主流瀏覽器中 JavaScript 的實作都是按照屬性定義的順序執行這個循環的。但是,Chrome 有一個例外,非數字屬性名稱會按順序拉到第一個數字屬性之前。
如今,這種行為因瀏覽器而異。現代瀏覽器都遵循定義順序,但 Chrome 和 Opera 除外,它們繼續打亂非數位屬性。這適用於“for...in”循環和“Object.keys”方法。
一個範例說明了這一點:
var obj = { "first": "first", "2": "2", "34": "34", "1": "1", "second": "second" }; for (var i in obj) { console.log(i); }
Chrome 和 Opera 中的輸出:
"1" "2" "34" "first" "second"
其他瀏覽器中的輸出:
"first" "second" "1" "2" "34"
儘管存在這種差異,但還是有必要的請注意,瀏覽器實現可能會發生變化,並且依賴於順序的保留可能有風險。
因此,如果屬性的順序在您的應用程式中至關重要,則應謹慎使用數組,因為它們提供了可預測且穩定的順序訂購機制。
以上是JavaScript 的 `for...in` 循環屬性順序在瀏覽器中是否一致?的詳細內容。更多資訊請關注PHP中文網其他相關文章!