for...in 与for...of

104 阅读1分钟

for of特点

  1. for of 遍历的是obj[Symbol.iterator]这个属性

  2. 具有这个属性能被for-of遍历的有

    1. 数组
    2. Set
    3. Map
    4. 类数组(例如arguments属性)
    5. 字符串
    6. Generator对象
  3. 不能遍历对象(没有Symbol.iterator属性的数据结构)

  4. 遍历数组返回的是元素

for-in特点

  1. 和for-of不同,用原型和用arr.name = 'e'这种方法添加属性,for-in可以遍历到这样添加的属性,毫无疑问push方法添加也可以

  2. 用for-in遍历得到结果的顺序

  3. 循环返回的是数据结构的键名

  4. 遍历数组返回的是数组的下标

  5. 不仅可以遍历已有的值,还可以遍历原型上的键,以及手动添加的键

  6. 特殊情况下,遍历的顺序不会按照对象的属性进行