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