微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript中的生成器

如何解决javascript中的生成器

function* print() {
  yield console.log("before");
  yield console.log("hello world ");
  return console.log("this is second line ");
}

let o = print();

o.next(); //console.log("before");
o.next(); // console.log("hello world ");
o.next(); //console.log("this is second line ")

为什么当我分配给 o 时可以访问迭代器?如果我单独调用 print().next() ,似乎迭代器会在使用后关闭

解决方法

来自 mozilla.org

function* 声明(function 关键字后跟一个星号)定义了一个生成器函数,它返回一个 Generator 对象。

这意味着,当您将其分配给变量时,该变量将成为该函数的对象。所以当你为它迭代的对象调用 .next() 时。

但是如果直接调用print().next()函数给generator函数,它不会返回任何对象。这看起来类似于您从头开始生成对象并每次调用它的第一个值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。