for...in 和 for...of 的区别

166 阅读1分钟
方法 作用 备注
for...in 遍历键名 会遍历对象的原型链
for...of 遍历键值 只能用于遍历可迭代对象,不可以用于遍历普通对象

所以,在遍历对象时,有如下两种方法:

const obj = {
  a: 1,
  b: 2,
  c: 3,
}

方法一:

for (const ele in obj) {
  if(obj.hasOwnProperty(ele)) { // 判断是否为对象自身属性
    console.log(obj[ele]);
  }
}

方法二:

for(const ele of Object.keys(obj)) {
  console.log(obj[ele]);
}

由于方法一会遍历到原型链,降低性能,所以推荐使用方法二。

详见阮大大的es6入门指导