「for (... in ...)」語句中的循環元素順序
「for (... in . ..)” JavaScript 中的循環用於迭代物件的屬性。問題是這些屬性是否按照它們聲明的順序進行處理。
根據 John Resig 的說法,所有主流瀏覽器在循環迭代期間都會維護物件屬性的定義順序。但是,Chrome 和 Opera 僅對非數字屬性名稱表現出例外。這些屬性在兩個瀏覽器中都會先於第一個數字屬性進行處理。
為了簡化:
對於例如:
var obj = { "first": "first", "2": "2", "34": "34", "1": "1", "second": "second" }; for (var i in obj) { console.log(i); };
在大多數瀏覽器中,輸出將為:
1 2 34 first second
在Chrome 和Opera 中,輸出將為:
1 2 34 first second
儘管當前瀏覽器行為的一致性,ECMAScript 規範未定義循環機制。因此,不建議依賴當前順序。
最佳實踐:
如果順序對您的應用程式至關重要,建議使用陣列而不是物件使用「for (... in ... )”循環。數組更可靠地保留元素的順序。
以上是JavaScript 的 `for...in` 循環是否保證屬性順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!