这个的javascript生成器值

标签 javascript generator ecmascript-6

在 javascript 的 javascript 生成器中 this 的值是什么? 在下面的代码中,两个比较都返回 false,当我执行 .toSource() 时,this 似乎是一个空的 Object。引用 ECMA 或 MDN 文档会很有帮助,但我在其中都找不到任何内容。

function thisGenerator(){
    while(1)
        yield this;
}

var gen=new thisGenerator();
alert(gen.next()==thisGenerator);
alert(gen.next()==gen);

最佳答案

this 仍然遵守正常规则。 考虑到,全局范围是 window:

var gen = (function() { yield this; })(); gen.next() === window // true
var gen = (function() { "use strict"; yield this; })(); gen.next() === undefined // true

在 quirks 模式下,未绑定(bind)函数中的 this 将是全局作用域(恰好是 window),而在严格模式下则是 undefined.

PS:当调用绑定(bind)函数时,一切照常:

var o = { foo: function() { yield this; } }; o.foo().next() === o // true
var o = {}; function foo() { yield this; }; foo.call(o).next() === o // true

关于这个的javascript生成器值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17773044/

相关文章:

javascript - 如何扩展 moment js?

javascript - 在数组中包含 LIKE 多个值

javascript - html5 Canvas 不填充坐标 (0,0) 处的文本

javascript - 如何在react中显示来自api的数据

javascript - 使用随机起始图像滚动图像

python - 在 Python 中迭代 append 到字符串的有效方法?

python - 循环中的发电机组被覆盖

python - Python 中何时使用生成器函数以及何时使用循环

javascript - jQuery 和 AJAX : how to deal with too fast responses?

javascript - 为什么 async/await 变量返回未定义?