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)
);
==================================