JavaScript中for...in、for...of、forEach的区别

177 阅读1分钟

for...in

用于迭代对象的所有可枚举属性,包括继承的可枚举属性。可与数组、字符串或普通对象一起使用,但不能与Map或Set对象一起使用

for (let k in ["a", "b", "c"]) 
    console.log(k); // 0, 1, 2 (array indexes)

for (let k in "str") 
    console.log(k); // 0, 1, 2 (string indexes)

for (let k in { a: 1, b: 2, c: 3 }) 
    console.log(k); // a, b, c (object property names)

for (let k in new Set(["a", "b", "a", "d"])) 
    console.log(k); // undefined (no enumerable properties)

for...of

用于迭代可迭代对象,迭代其值而不是其属性。可以与数组,字符串Map或Set对象一起使用,但不能与普通对象一起使用

for (let v of ["a", "b", "c"])
    console.log(v); // a, b, c (array values)

for (let v of "str") 
    console.log(v); // s, t, r (string characters)

for (let v of new Set(["a", "b", "a", "d"]))
    console.log(v); // a, b, d (Set values)

for (let v of { a: 1, b: 2, c: 3 })
    console.log(v); // TypeError (not iterable)

forEach()

forEach()是Array原型的一种方法,它允许遍历数组的元素。尽管forEach()仅在数组上进行迭代,但它可以在迭代时访问每个元素的值和索引

["a", "b", "c"].forEach(
      (v) => console.log(v) // a, b, c (array values)
    );

["a", "b", "c"].forEach(
      (v, i) => console.log(i) // 0, 1, 2 (array indexes)
    );

==================================

此为个人学习记录文章,如有错误请指出
欢迎小伙伴前来交流,如有转载请注明出处,谢谢
每一个努力的人都值得被肯定,但是最大的肯定来源于自己!!!
加油每一天!!!