在 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`,可以返回结果。