`for...in` 和 `for...of` 有何区别?
时间: 2024-10-17 09:15:34 浏览: 21
`for...in` 和 `for...of` 都是 JavaScript 中的循环结构,但它们的主要区别在于它们用于不同类型的数据结构和遍历目的。
1. **`for...in`** 主要用于遍历对象的属性(包括原型链上的属性)。它会返回对象的所有可枚举属性,不仅仅是自身的属性,还包括从原型链上继承来的属性。这种循环通常用于添加、删除或修改对象属性的操作。
示例:
```javascript
let obj = { a: 1, b: 2 };
for (let prop in obj) {
console.log(prop, obj[prop]);
}
```
2. **`for...of`** 则主要用于遍历可迭代对象(如数组、字符串、Set、Map等),以及通过`Symbol.iterator`方法生成的迭代器。它只对对象自身的内容进行迭代,不会遍历原型链。
示例:
```javascript
let arr = [1, 2, 3];
for (let value of arr) {
console.log(value);
}
```
简而言之,`for...in` 更适合于处理属性集,而 `for...of` 更适用于按元素操作数据集合。
阅读全文