javascript - 关于生成器函数 send() javascript

标签 javascript ecmascript-6

我正在 Mozilla Dev 页面中查看生成器函数。

有一个示例代码具有send() 功能。

function* fibonacci() {
  var a = yield 1;
  yield a * 2;
}

var it = fibonacci();
console.log(it);          // "Generator {  }"
console.log(it.next());   // 1
console.log(it.send(10)); // 20
console.log(it.close());  // undefined
console.log(it.next());   // throws StopIteration (as the generator is now closed)

但是,chrome 和 Firefox(最新版本)都在 send() 函数上抛出错误。

对此有何看法?不支持吗?

最佳答案

.sendLegacy generator objects 的一部分特定于 SpiderMonkey 引擎。 It will be removed in some future release .他们已经开始在部分代码中使用 ES6 生成器删除/替换遗留生成器对象(Bug 1215846Bug 1133277)

目前您仍然可以在 Firefox 中使用遗留生成器(此答案的当前版本:43.0.4)。只需在定义时省略 *,只要函数体使用 yield 语句,就会使用遗留生成器。

function fibonacci() {
  var a = yield 1;
  yield a * 2;
}

var it = fibonacci();
console.log(it);          
console.log(it.next());   
console.log(it.send(10)); 
console.log(it.close());  
console.log(it.next());

关于javascript - 关于生成器函数 send() javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34921116/

相关文章:

javascript - 如何通过JavaScript控制div id中的图像大小?

java - 为什么 java 代码不将文本转换为 utf8 字符?

javascript - Javascript Function.prototype.bind 的变体我想确保我理解

javascript - 如何删除更漂亮的分号?

javascript - 如何在 react Bootstrap 表中添加按钮?

javascript - 使用 es6 或 lodash 将字符串数组转换为对象数组

javascript - 'can' t read property foo of undefined' 和 'undefined is not an object' 之间有什么区别

javascript - 确认提交后如何提交表单? jQuery, Ajax

JavaScript,下面函数中的 "length"设置了什么,它是什么意思?

javascript - 我可以在 Node 6 中表示大整数,仅进行求幂而不具有依赖性吗?