for of 和 for in
时间: 2023-10-20 17:29:24 浏览: 35
`for of`和`for in`是用于循环遍历数据结构的两种不同的语法。
`for of`循环用于遍历可迭代对象(如数组、字符串、Map、Set等),它会遍历对象的每个元素并执行相应的操作。例如:
```javascript
const arr = [1, 2, 3];
for (const element of arr) {
console.log(element);
}
```
输出结果为:
```
1
2
3
```
`for in`循环用于遍历对象的属性(包括继承的属性),它会遍历对象的每个可枚举属性并执行相应的操作。例如:
```javascript
const obj = { a: 1, b: 2, c: 3 };
for (const key in obj) {
console.log(key, obj[key]);
}
```
输出结果为:
```
a 1
b 2
c 3
```
需要注意的是,`for in`循环不仅会遍历对象自身的属性,还会遍历原型链上的属性。如果只想遍历对象自身的属性,可以使用`hasOwnProperty`方法进行过滤。
相关问题
for of和for in
for...of 和 for...in 是 JavaScript 中用于遍历数据结构的循环语句。
for...of 语句用于遍历可迭代对象(如数组、字符串、Set、Map 等)中的元素。它会迭代对象的可迭代属性,并将每个元素赋值给指定的变量。
例如,使用 for...of 遍历数组:
```javascript
const arr = [1, 2, 3, 4];
for (const element of arr) {
console.log(element);
}
```
输出:
```
1
2
3
4
```
for...in 语句用于遍历对象的可枚举属性。它会迭代对象的属性名称,并将每个属性的值赋给指定的变量。
例如,使用 for...in 遍历对象:
```javascript
const obj = { a: 1, b: 2, c: 3 };
for (const key in obj) {
console.log(key + ': ' + obj[key]);
}
```
输出:
```
a: 1
b: 2
c: 3
```
需要注意的是,for...in 循环也会遍历对象的原型链上的属性,因此需要使用 `hasOwnProperty` 方法来过滤掉继承的属性。
总结起来,for...of 适用于遍历可迭代对象的值,而 for...in 适用于遍历对象的属性。
js for of 和for in
当我们需要遍历一个集合或者数组时,JavaScript提供了两种常用的循环方式:for...of和for...in。
1. for...of循环:
for...of循环是ES6引入的一种遍历方式,它可以用来遍历可迭代对象(如数组、字符串、Set、Map等)。它的语法结构如下:
```
for (variable of iterable) {
// 循环体
}
```
其中,variable是每次迭代时的变量,iterable是要遍历的可迭代对象。在每次循环中,variable会被赋值为可迭代对象中的当前元素。例如:
```
const arr = [1, 2, 3];
for (const element of arr) {
console.log(element);
}
// 输出:1 2 3
```
for...of循环会自动遍历可迭代对象中的所有元素,并且不需要我们手动管理索引或者迭代器。
2. for...in循环:
for...in循环是一种用于遍历对象属性的循环方式。它的语法结构如下:
```
for (variable in object) {
// 循环体
}
```
其中,variable是每次迭代时的变量,object是要遍历的对象。在每次循环中,variable会被赋值为对象的一个属性名。例如:
```
const obj = { a: 1, b: 2, c: 3 };
for (const key in obj) {
console.log(key, obj[key]);
}
// 输出:a 1 b 2 c 3
```
for...in循环会遍历对象的所有可枚举属性(包括继承得到的属性),但不会遍历数组或者字符串的索引。