for of特点
-
for of 遍历的是obj[Symbol.iterator]这个属性
-
具有这个属性能被for-of遍历的有
- 数组
- Set
- Map
- 类数组(例如arguments属性)
- 字符串
- Generator对象
-
不能遍历对象(没有Symbol.iterator属性的数据结构)
-
遍历数组返回的是元素
for-in特点
-
和for-of不同,用原型和用arr.name = 'e'这种方法添加属性,for-in可以遍历到这样添加的属性,毫无疑问push方法添加也可以
-
用for-in遍历得到结果的顺序
-
循环返回的是数据结构的键名
-
遍历数组返回的是数组的下标
-
不仅可以遍历已有的值,还可以遍历原型上的键,以及手动添加的键
-
特殊情况下,遍历的顺序不会按照对象的属性进行