理解';收益率';javascript中的关键字?
我今天在javascript中遇到了理解';收益率';javascript中的关键字?,javascript,firefox,yield-keyword,Javascript,Firefox,Yield Keyword,我今天在javascript中遇到了yield关键字,我知道目前在未升级ECMA 6的浏览器中不支持它。同时,在firefox中,如何重写以下代码而不产生yield if (currentNode) { yield currentNode; currentNode = null; } 没有直接的等价物。但是,可以通过返回“生成器”对象来伪造它。基本上,延续代码被移动到生成器的next() 考虑这一点: 您可以尝试这样声明yield:yield{Variable1:value,Var
yield
关键字,我知道目前在未升级ECMA 6的浏览器中不支持它。同时,在firefox中,如何重写以下代码而不产生yield
if (currentNode) {
yield currentNode;
currentNode = null;
}
没有直接的等价物。但是,可以通过返回“生成器”对象来伪造它。基本上,延续代码被移动到生成器的
next()
考虑这一点:
您可以尝试这样声明
yield
:yield{Variable1:value,Variable2:value}@没有人喜欢。。什么?我不确定这是什么意思。我在这里浏览了JavaScript中的WBXML解析器,以及它们对Yield
的使用,让我的头脑完全掌握了Yield
的概念
function fib() {
var i = 0, j = 1;
while (true) {
yield i;
var t = i;
i = j;
j += t;
}
}
var g = fib();
for (var i = 0; i < 10; i++) {
console.log(g.next());
}
function fib() {
var i = 0, j = 1;
return {
'next': function () {
var yieldRet = i;
// These haven't occurred before the `yield` in the above generator,
// but it makes it easier to do it in the same order here.
// Just make sure there are no OBSERVABLE side-effects.
var t = i;
i = j;
j += t;
return yieldRet;
}
};
}
var g = fib();
for (var i = 0; i < 10; i++) {
console.log(g.next());
}
var currentNode;
function yield1 () {
var y = { next: st0 };
return y;
function st0 () {
if (currentNode) {
y.next = st1;
return currentNode;
} else {
y.next = stZ;
}
}
function st1 () {
y.next = stZ;
currentNode = null; // observable side-effect!
}
function stZ () {
}
}
var g = yield1();
currentNode = "x";
console.log(g.next()); // "x"
console.log(currentNode); // still "x"
g.next();
console.log(currentNode); // null