我对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"
正如我所料。
我很困惑为什么在第一种情况下“世界”在“你好”之前回归,或许我不明白收益率是如何起作用的,是否有人可能知道为什么收益率会这样说明呢?
答案 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”