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

146 阅读1分钟

for…of 是 ES6 新增的遍历方式,允许遍历一个含有 iterator 接口的数据结构(数组、对象等)并且返回各项的值,和 ES3 中的 for…in 的区别如下:

1、对对象的遍历

  • for…in 获取的是对象的键名,for…of 遍历获取的是对象的键值
  • for…in 会遍历对象的整个原型链,性能非常差不推荐使用,而 for…of 只遍历当前对象不会遍历原型链;

2、对数组的遍历

  • for…in 会返回数组中所有可枚举的属性(包括原型链上可枚举的属性),for…of 只返回数组的下标对应的属性值;

【总结 :】 for...in 循环主要是为了遍历对象而生,不适用于遍历数组;for...of 循环可以用来遍历数组、类数组对象,字符串、Set、Map 以及 Generator 对象。


区别for…infor…of
  获取对象的键名 / 键值         键名(key)      键值(value)
  是否遍历对象原型链           ✔️          × 
  遍历数组返回的数据     所有可枚举属性(包括原型)  下标对应的属性值 
   适合遍历对象 / 数组          对象    数组
    可遍历的数据         可枚举的数据  可迭代的数据