【发布时间】:2014-05-04 16:38:28
【问题描述】:
我对 JS 1.7 的新 yield 功能何时产生值感到有些困惑。
当我这样写我的函数时:
function helloWorld() {
console.log('hello');
yield "world";
}
var sayHello = helloWorld();
sayHello.next();
返回:
>"world"
>"hello"
但是当我这样写我的函数时:
function helloWorld() {
console.log('hello');
yield console.log("world");
}
var sayHello = helloWorld();
sayHello.next();
返回:
>"hello"
>"world"
正如我所料。
我很困惑为什么在第一种情况下“world”在“hello”之前返回,也许我不明白 yield 是如何工作的,谁能详细说明为什么 yield 会这样?
【问题讨论】:
-
请看这里stackoverflow.com/questions/2282140/…,这可能会回答您的问题。
-
啊,当我开始使用 yield 语句时,我确实第一次阅读了这个,它本质上是比较了收益和回报。但是,如果我用 return 替换了世界收益,它仍然会在返回“世界”之前记录“你好”。我想知道为什么在调用 next 时,如果它是一个原始值,则在“world”之前返回收益率值?我对python中的生成器和yield非常熟悉,但这在新的JS实现中似乎很奇怪。
标签: javascript generator yield