在 JavaScript 中,`forEach`、`for...in` 和 `for...of` 是用于循环遍历数组或类数组对象的不同方式,它们有以下区别:
1. `forEach`:
? ?- 适用于数组和类数组对象。
? ?- 无法使用 `break` 或 `continue` 跳出循环。
? ?- 不能获取当前元素的索引值。
? ?- 不能使用 `return` 返回结果。
? ?示例:
?
var arr = [1, 2, 3];
arr.forEach(function(item) {
console.log(item);
});
2. `for...in`:
? ?- 适用于遍历对象的属性,包括继承的可枚举属性。
? ?- 可以遍历数组,但是会遍历数组的索引(字符串类型)而非元素本身。
? ?- 遍历顺序不确定,可能会出现无序遍历的情况。
? ?- 可以使用 `break` 和 `continue` 控制循环流程。
? ?示例:
?
var obj = {a: 1, b: 2, c: 3};
for (var key in obj) {
console.log(key + ': ' + obj[key]);
}
3. `for...of`:
? ?- 适用于遍历可迭代对象,如数组、字符串、Set、Map 等。
? ?- 遍历的是对象的值而非索引。
? ?- 可以使用 `break` 和 `continue` 控制循环流程。
? ?- 可以使用 `return` 返回结果。
? ?示例:
var arr = [1, 2, 3];
for (var item of arr) {
console.log(item);
}
总结:
- `forEach` 适用于数组和类数组对象,无法使用 `break` 或 `continue`,不能获取索引值,不能返回结果。
- `for...in` 适用于遍历对象的属性,也可以遍历数组的索引,可以使用 `break` 和 `continue`。
- `for...of` 适用于遍历可迭代对象,遍历的是对象的值,可以使用 `break` 和 `continue`,可以返回结果。
?