首页 > 解决方案 > JS:使用 for of 循环关闭迭代器时的非法返回语句

问题描述

我试图尽早打破迭代器并返回结果但Illegal return statement出错。

const gen = function *(){
  yield 1;
  yield 2;
  yield 3;
}
for (let i of gen()) {
  console.log(i)
  return i
}

来自 MDN文档

在 for...of 循环中,突然的迭代终止可能由 break、throw 或 return 引起。在这些情况下,迭代器是关闭的。

虽然 break and throw 按预期工作。

标签: javascriptiterator

解决方案


return在生成器功能之外。您不会破坏它们之外的生成器,因为这样做的理由很少。


推荐阅读