不支持。JavaScript箭头函数不能用作Generator函数,因语法上function与=>无法共存,且箭头函数无[[GeneratorState]]内部槽位、不支持yield和迭代器协议,正确写法只能是function或类中*method()。

不支持。JavaScript 的箭头函数不能用作 Generator 函数。
语法层面就不允许
Generator 函数必须使用 function* 语法(或类中方法名前加 *),而箭头函数的语法结构(=>)与 * 无法共存。尝试写成 *() => {} 或 ()* => {} 都会直接报语法错误。
- ✅ 正确写法:
function* gen() { yield 1; }或class C { *method() { yield 1; } } - ❌ 错误写法:
const gen = *() => {}、const gen = () => *{ yield 1; }、*gen = () => {}—— 全部非法
设计目标根本不同
箭头函数的核心特性是词法绑定 this、省略 arguments、不可作为构造函数,它被定位为“轻量级函数表达式”;而 Generator 需要可暂停/恢复的执行上下文、内部状态机、迭代器协议支持——这些都依赖 function* 构造的特殊函数对象。
- 箭头函数没有自己的
[[GeneratorState]]内部槽位,无法响应next() - 它不实现迭代器协议,调用后返回的是普通函数对象,不是 Generator 实例
-
yield关键字在箭头函数体内直接抛出SyntaxError
替代方案很明确
如果需要在类或模块中定义生成逻辑,应直接使用标准 Generator 语法:
立即学习“Java免费学习笔记(深入)”;
- 独立函数:用
function* name() { ... } - 类方法:用
*methodName() { ... }(星号紧贴方法名) - 需绑定
this时,可在普通方法内返回 Generator 函数,或用bind处理function*实例
想用箭头函数的简洁性?可以把它和 Generator 结合使用——比如用箭头函数封装对 Generator 的调用,但生成器本身必须是 function*。


















