在 JavaScript 中,for…in、for…of 和 forEach 都是用于遍历对象的循环语句。但是,它们之间存在一些关键的区别。
遍历对象类型
- for…in:用于遍历对象的 可枚举属性,包括原型链上的属性。
- for…of:用于遍历 可迭代对象,包括数组、字符串、Set、Map 等。
- forEach:只能用于遍历 数组。
遍历顺序
- for…in:遍历对象的属性的 键名 顺序。
- for…of:遍历对象的 元素值 顺序。
- forEach:遍历数组的 元素值 顺序。
终止循环
- for…in:可以使用 break 语句终止循环。
- for…of:可以使用 break 语句终止循环。
- forEach:不能 使用 break 语句终止循环。
回调函数
- for…in:没有回调函数。
- for…of:没有回调函数。
- forEach:需要传入一个回调函数,该函数会在每个元素上调用一次。
总结
循环语句 | 遍历对象类型 | 遍历顺序 | 终止循环 | 回调函数 |
---|---|---|---|---|
for…in | 可枚举属性 | 键名 | 支持 | 无 |
for…of | 可迭代对象 | 元素值 | 支持 | 无 |
forEach | 数组 | 元素值 | 不支持 | 支持 |
示例
JavaScript
使用建议
- for…in:适合遍历对象的属性名或键。
- for…of:适合遍历可迭代对象的元素值。
- forEach:适合遍历数组并对每个元素执行相同操作。