for in 对比 for of区别


在JavaScript中,for...infor...of都是循环结构,但它们用于不同的目的,并操作于不同类型的对象。

for...in:

  • 目的: 用于迭代对象的属性,包括其原型链上的属性。

  • 示例:

    const obj = { a: 1, b: 2, c: 3 };
    
    for (const key in obj) {
      console.log(key, obj[key]);
    }
  • 迭代: 对象的键(包括继承的键)。

  • 额外说明:

    • 它通常用于对象,但也可以用于数组以迭代它们的索引。
    • 不推荐用于迭代数组,因为它可能迭代继承的属性。

for...of:

  • 目的: 用于迭代可迭代对象,如数组、字符串、映射、集合等。

  • 示例:

    const array = [1, 2, 3];
    
    for (const value of array) {
      console.log(value);
    }
  • 迭代: 可迭代对象的值。

  • 额外说明:

    • 不能用于常规对象(没有[Symbol.iterator]方法的对象)。
    • for...in相比,特别是在处理数组或其他可迭代对象时,它提供了更简洁的语法。

总体而言,for...in用于迭代对象属性,而for...of用于迭代可迭代对象。在处理数组、字符串、映射、集合等时,通常首选for...of。在处理对象时,特别是具有原型的对象时,可能更适合使用for...in


原文链接:codingdict.net