前言:最近用for-in時,看到說for-in不能保證遍歷的物件順序,對此有些疑問,於是便研究了下,本文做簡要說明。
let obj =
let obj2 =
for(key in obj)
// 輸出順序為1,2,a,b
for(key in obj2)
// 輸出的順序為name,age,gender
可以發現,for-in的迭代順序不是按定義物件時的順序(其實不需要for-in,直接輸出物件或用object.keys
遍歷都是一樣的效果)
console.log(obj)//
console.log(object.keys(obj))// ["1", "2", "a", "b"]
那如果不是按定義的順序,是按什麼順序呢?看obj1像是asc碼公升序遍歷,但看obj2又不是。
根據可以得知
說明:以上第二點,我在ie瀏覽器中測試過,並不是按物件定義的順序輸出,而是和chrome表現一樣,都是按上部分【現象】中的表現輸出。
結論:雖然沒能完全確定for-in的遍歷順序,但可以知道此順序不是唯一的,在不同的環境下可能會有不能的表現,所以我們不能依賴for-in來按某種特定順序來遍歷物件
Promise物件及它在js中的執行順序
學習阮一峰老師的es6入門後的記錄 1 promise的定義 promise是乙個物件,通常包裹著乙個非同步操作,promise物件提供一些介面的方法,返回一些操作的狀態或錯誤資訊 promise有三種狀態 pending 進行中 resolved 已完成,也叫fulfilled rejected ...
js中的物件
1 什麼是物件 具有一組屬性和方法的乙個例項被稱為物件 1 屬性 物件具有的屬性 2 方法 物件具有的功能 2 宣告陣列的方法 方法1 通過new關鍵字來例項化 new關鍵字可以省略 例 var obj new object 或 var obj object 方法2 通過字面量來例項化 給物件新增屬...
js中的this物件
this物件是執行時基於函式的執行環境繫結的 在全域性函式中 this等於window 當函式作為某個物件的方法呼叫時,this等於那個物件,不過匿名函式的執行環境具有全域性性,因此this物件通常指向window。var name the window var object alert objec...