for...of可直接遍历Generator函数返回的迭代器对象,因其天然实现Symbol.iterator方法;遍历时自动调用next()获取value,直到done为true;同一迭代器只能遍历一次,需每次调用Generator函数获取新实例。

for...of 循环可以直接遍历 Generator 函数返回的迭代器对象,无需额外处理。
Generator 函数返回的是可迭代对象
Generator 函数调用后返回一个迭代器(Iterator),该迭代器实现了 Symbol.iterator 方法,因此天然支持 for...of 遍历。
例如:
function* numbers() {
yield 1;
yield 2;
yield 3;
}
<p>for (const n of numbers()) {
console.log(n); // 输出:1, 2, 3
}</p>遍历时自动调用 next() 并解构 value
for...of 内部会反复调用迭代器的 next() 方法,每次取其 value 属性,直到 done: true 为止。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
等价于手动调用:
const it = numbers();
let result = it.next();
while (!result.done) {
console.log(result.value);
result = it.next();
}
注意 Generator 只能遍历一次
同一个 Generator 迭代器对象不可重复使用。一旦遍历结束(或中途跳出),再次 for...of 将不会输出任何值。
- ✅ 正确:每次调用
numbers()获取新迭代器 - ❌ 错误:复用同一个迭代器变量多次遍历
const gen = numbers(); // ❌ 错误示例 for (const n of gen) console.log(n); // 输出 1,2,3 for (const n of gen) console.log(n); // 无输出(已耗尽)
可配合其他可迭代语法一起使用
Generator 迭代器可直接用于扩展运算符、解构赋值、Array.from 等场景:
const arr = [...numbers()]; // [1, 2, 3] const [a, b] = numbers(); // a=1, b=2 const copy = Array.from(numbers()); // [1, 2, 3]
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










