Vin*_*ino 5 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)
Run Code Online (Sandbox Code Playgroud)
但是,chrome和Firefox(最新版本)都在send()函数上抛出错误.
对此有何看法?它不受支持吗?
.send
是特定于 SpiderMonkey 引擎的旧版生成器对象的一部分。它将在未来的某个版本中删除。他们已经开始在部分代码中使用 ES6 生成器删除/替换遗留生成器对象(Bug 1215846、Bug 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());
Run Code Online (Sandbox Code Playgroud)