for...of遍历数组时循环变量直接为元素值,无需下标或额外访问;其设计目标是简化可迭代对象的取值操作,自动调用迭代器返回元素本身。

直接用 for...of 遍历数组时,循环变量就是当前元素的值,不需要下标、也不需要额外访问数组项。
语法最简:一次拿到元素值
for...of 的设计目标就是简化可迭代对象(如数组)的“取值”操作。它自动调用数组的迭代器,每次返回一个元素本身:
const arr = ['a', 'b', 'c'];
for (const item of arr) {
console.log(item); // 输出:'a' → 'b' → 'c'
}
这里 item 就是数组中每个元素的值,不是索引,也不是对象包装,原样输出即可。
对比 for 和 for...in,避免常见误区
-
for (let i = 0; i:要手动用arr[i]取值,多写一步; -
for...in:遍历的是数组的**属性名(即字符串索引)**,如"0"、"1",不是值,且会遍历原型链上的可枚举属性,不推荐用于数组; -
for...of:专为“取值”而生,语义清晰、安全、简洁。
支持解构,一行提取多个字段(适用于对象数组)
如果数组里是对象,可以在循环中直接解构获取所需属性:
const users = [{name: '张三', age: 25}, {name: '李四', age: 30}];
for (const {name, age} of users) {
console.log(`${name} ${age}岁`); // 张三 25岁 → 李四 30岁
}
注意:不能直接改原数组元素(需配合索引或其它方式)
for...of 中的变量是值的副本(对基本类型)或引用(对对象),直接赋值不会影响原数组:
const nums = [1, 2, 3];
for (const n of nums) {
n = n * 2; // 这样写无效,nums 不变
}
// 如需修改原数组,可用 for 循环 + 索引,或使用 map()
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











