for...in / for...of 区别
结果不同
- for...in 遍历得到 key
- for...of 遍历得到 value
数据类型不同
- for...in 用于可枚举的数据
- for...of 用于可迭代的数据
什么是可枚举数据呢?
属性中 enumerable 是 true,就是可枚举的;
Object.getOwnPropertyDescriptors
方法获取指定对象所有的自有属性的属性描述符。
[1] [2] [3]
什么是可迭代数据呢?ES6 中引入了 iterable 类型,他们特点就是都拥有 [Symbol.iterator] 方法,包含他的对象被认为是可迭代的 iterable。 例如:Array / Set / Map / arguments / NodeList 都属于 iterable。
[4]
for...in / Object.keys() 区别- for...in 可遍历原型链上扩展的属性,
- Object.keys() 只遍历自身属性