循環
字符串遍歷:可通過for-of遍歷字符串
for-in:遍歷對象自身可繼承可枚舉屬性
Object.keys():返回對象自身可枚舉屬性的鍵組成的數組
Object.getOwnPropertyNames():返回對象自身可繼承可枚舉非枚舉屬性的鍵組成的數組
Object.getOwnPropertySymbols():返回對象Symbol屬性的鍵組成的數組
Reflect.ownKeys():返回對象自身可繼承可枚舉非枚舉Symbol屬性的鍵組成的數組
ForOf循環
- 定義:調用Iterator接口產生遍歷器對象(for-of內部調用數據結構的Symbol.iterator())
- 遍歷字符串:for-in獲取索引,for-of獲取值(可識別32位UTF-16字符)
- 遍歷數組:for-in獲取索引,for-of獲取值
- 遍歷對象:for-in獲取鍵,for-of需自行部署
- 遍歷Set:for-of獲取值 => for (const v of set)
- 遍歷Map:for-of獲取鍵值對 => for (const [k, v] of map)
- 遍歷類數組:包含length的對象、Arguments對象、NodeList對象(無Iterator接口的類數組可用Array.from()轉換)
- 計算生成數據結構:Array、Set、Map
- keys():返回遍歷器對象,遍歷所有的鍵
- values():返回遍歷器對象,遍歷所有的值
- entries():返回遍歷器對象,遍歷所有的鍵值對
- 與for-in區別
- 有着同for-in一樣的簡潔語法,但沒有for-in那些缺點、
- 不同於forEach(),它可與break、continue和return配合使用
- 提供遍歷所有數據結構的統一操作接口