JavaScript 中 for...in 和 for...of 循环的区别是什么?

推荐答案

在 JavaScript 中,for...infor...of 是两种不同的循环结构,它们的主要区别在于遍历的对象类型和遍历的内容:

  • for...in:用于遍历对象的可枚举属性(包括原型链上的属性),通常用于遍历对象的键(key)。
  • for...of:用于遍历可迭代对象(如数组、字符串、Map、Set 等)的元素值(value),通常用于遍历数组或类数组对象的值。

本题详细解读

for...in 循环

  • 用途for...in 循环用于遍历对象的可枚举属性。它会遍历对象自身的属性以及继承自原型链的属性。
  • 语法
  • 示例
  • 注意事项
    • for...in 遍历的是对象的键(key),而不是值(value)。
    • 如果对象有继承的属性,这些属性也会被遍历到。
    • 不推荐使用 for...in 遍历数组,因为它会遍历数组的所有可枚举属性,包括非数字键和原型链上的属性。

for...of 循环

  • 用途for...of 循环用于遍历可迭代对象(如数组、字符串、Map、Set 等)的元素值。
  • 语法
  • 示例
  • 注意事项
    • for...of 遍历的是可迭代对象的值(value),而不是键(key)。
    • for...of 不能直接用于普通对象,因为普通对象不是可迭代的。如果需要遍历对象的属性,应该使用 for...inObject.keys() 等方法。

总结对比

特性 for...in for...of
遍历对象 对象(包括原型链上的属性) 可迭代对象(如数组、字符串、Map 等)
遍历内容 对象的键(key) 可迭代对象的值(value)
适用场景 遍历对象的属性 遍历数组、字符串等可迭代对象的元素
是否遍历原型链属性
纠错
反馈