小编Red*_*ams的帖子

插入空白 console.log() 调用时行为发生变化

代码

var repro_bug = () => {
    var state = { x: 1, y: 1 };

    return () => {
        var toggle = () => {
            state.y = 1;

            console.log(state.x);
        };

        // console.log();

        state.x = state.y;
        state.y = 0;

        toggle();
    };
};

var run = repro_bug();
Run Code Online (Sandbox Code Playgroud)

漏洞

如果你打电话run(),它应该总是记录1。在 Chrome 91.0.4472.114(在 Chrome OS 91.13904.0 上)上,当我调用run()十次左右时,它会开始记录0

奇怪的是,如果您取消注释第 11 行(空白) console.log,它就会按预期工作。这让我相信这是 Chrome 中的一个错误,可能涉及某种无序执行。这个例子是我能得到的最短的例子,单独的toggle函数和对象state(而不是两个变量)都是它表现奇怪的必要条件。

请注意,您需要run()手动执行最终操作(如下面的屏幕截图所示)才能重现。这可能在某种程度上与时间有关。

无法在 …

javascript google-chrome

5
推荐指数
0
解决办法
255
查看次数

标签 统计

google-chrome ×1

javascript ×1