for in 用来

  • 遍历一个对象的可枚举属性,包括原型链上的可枚举属性
  • 返回的是键名(属性名)
  • 可以遍历普通对象,也可以遍历数组(性能不如for of)
  • ES3的语法

for of 用来

  • 遍历可迭代对象(数组,字符串,Map,Set)
  • 返回的是每次迭代的值
  • 不能直接用于遍历普通对象
  • ES6语法*
  1. 遍历顺序:for…in 不保证遍历顺序,而 for…of 会按照迭代器定义的顺序进行遍历。
  2. 性能:通常来说,for…of 的性能比 for…in 更好,特别是在遍历数组时。所以遍历优先选 for…of
  3. 继承属性:for…in 会遍历对象的原型链,而 for…of 不会。
  4. 使用场景:for…in 更适合用于遍历对象的属性,而 for…of 更适合用于遍历数组或其他可迭代对象的值。

reference