什么时候在Javascript中执行yield语句?

时间:2014-03-26 10:34:22

标签: javascript generator yield

我对JS 1.7的新收益率特征中的值产生时感到有些困惑。

当我写这样的函数时:

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"

正如我所料。

我很困惑为什么在第一种情况下“世界”在“你好”之前回归,或许我不明白收益率是如何起作用的,是否有人可能知道为什么收益率会这样说明呢?

1 个答案:

答案 0 :(得分:0)

抱歉,这似乎是个错误。

我尝试使用Firefox控制台使用yield并将其输出,但在我实际构建了一个实际文件并通过firefox运行后,它表现得如预期的那样

如果有人好奇

<html>
<head>
</head>
<body>
<script type="application/javascript;version=1.7" >
function helloWorld () {
    console.log("hello"); 
    yield "world";
    yield "END";
} 

var sayHello = helloWorld();

console.log(sayHello.next());

function helloWorld1 () {
    console.log('hello'); 
    yield console.log("world");
    yield "END2";
}

var sayHello1 = helloWorld1();

sayHello1.next();
console.log(sayHello.next());
console.log(sayHello1.next());
</script>
</body>
</html>

输出:

“你好” “世界” “你好” “世界” “结束” “END2”