返回
JavaScript循环方法:forEach、for…in、for…of,深度解析!
前端
2024-02-09 23:22:52
众所周知,JavaScript诞生已经有20多年了。对于初学者而言,可能对JavaScript里的循环方法还略知一二,但说到掌握也是不敢说出口的。
今天,就为大家深度解析JavaScript里的循环方法:forEach、for…in、for…of。
从传统方法说起
这是我们一直使用的用来循环一个数组的方法:
var array = [1,2,3,4,5];
for (var i = 0; i < array.length; i++) {
console.log(array[i]);
}
这种方法简单直接,但也有不足之处:
- 必须知道数组的长度。
- 循环时,不能中断循环(使用break语句或使用return语句)。
- 不太好理解。
forEach方法的诞生
为了解决这些问题,JavaScript 5 引入了forEach方法。forEach方法可以让我们以更简单的方式来循环一个数组:
var array = [1,2,3,4,5];
array.forEach(function(item, index, array) {
console.log(item);
});
forEach方法接受一个函数作为参数,该函数将在数组的每个元素上调用。函数的第一个参数是数组的当前元素,第二个参数是当前元素的索引,第三个参数是数组本身。
forEach方法具有以下优点:
- 不必知道数组的长度。
- 可以中断循环(使用break语句或使用return语句)。
- 更容易理解。
for…in方法的引入
for…in方法可以让我们循环一个对象的所有属性:
var object = {
name: 'John',
age: 30,
city: 'New York'
};
for (var property in object) {
console.log(property);
}
for…in方法接受一个变量作为参数,该变量将在对象的每个属性上迭代。
for…in方法具有以下优点:
- 可以循环一个对象的所有属性,无论属性是否可枚举。
- 可以中断循环(使用break语句或使用return语句)。
for…of方法的诞生
for…of方法可以让我们循环一个数组或一个对象的可迭代属性:
var array = [1,2,3,4,5];
for (var item of array) {
console.log(item);
}
var object = {
name: 'John',
age: 30,
city: 'New York'
};
for (var property of Object.keys(object)) {
console.log(property);
}
for…of方法接受一个变量作为参数,该变量将在数组或对象的每个可迭代属性上迭代。
for…of方法具有以下优点:
- 可以循环一个数组或一个对象的可迭代属性。
- 不必知道数组或对象的长度。
- 可以中断循环(使用break语句或使用return语句)。
- 更容易理解。
总结
forEach、for…in和for…of方法都是循环的一种方式,但它们之间存在着一些区别。
方法 | 特点 | 优点 | 缺点 |
---|---|---|---|
forEach | 只能循环数组 | 不必知道数组的长度 | 不能中断循环 |
for…in | 可以循环对象的所有属性 | 可以中断循环 | 可能会循环不可枚举的属性 |
for…of | 可以循环数组或对象的每个可迭代属性 | 不必知道数组或对象的长度 | 不能中断循环 |
在实际开发中,我们可以根据具体情况选择合适的循环方法。