for...in
迭代对象的属性:
for...in
循环用于迭代对象的可枚举属性,包括继承的可枚举属性。- 在迭代过程中,它会遍历对象的所有可枚举属性名称,而不仅限于数组或类似数组的对象的索引。
- 注意:**
for...in
** 不建议用于迭代数组,因为它会枚举数组的所有可枚举属性,包括原型链上的属性,而且迭代顺序不一定是按照数组的顺序。
const obj = { a: 1, b: 2, c: 3 };
for (let prop in obj) {
console.log(prop); // 输出:a, b, c
}
for...of
迭代可迭代对象的值:
for...of
循环用于迭代可迭代对象(如数组、Map、Set、字符串等)的元素值。- 在迭代过程中,它会遍历对象的值,而不是键或索引。
- 对于普通的对象,它并不适用,因为普通对象不是可迭代的。
const arr = [1, 2, 3];
for (let value of arr) {
console.log(value); // 输出:1, 2, 3
}
总的来说,**for...in
** 用于迭代对象的属性,而 for...of
用于迭代可迭代对象的值。