JavaScript允许Firefox开发者工具调试视图中的Block-Scope

时间:2017-01-02 12:34:33

标签: javascript

我正在调查JavaScript中let 块范围的工作情况,特别是浏览器的调试视图如何显示信息

let循环中使用for创建一个块范围,回调function timeoutHandler()可以访问,这一切都很好

Chrome开发工具中,[[作用域]]如下所示:

enter image description here

Firefox开发者工具中,列出了一个额外的块范围,其中包含timeoutHandler:timeoutHandler()个属性。我只希望看到块范围j:1

enter image description here

这个额外的块指的是什么?

只是想知道,因为我预期的词汇范围会在Chrome调试中显示,但在Firefox调试中没有预期的那样

1 个答案:

答案 0 :(得分:0)

  

timeoutHandler引用的这个额外阻止是什么?

似乎显示immutable binding that is wrapped around your named function expression。函数表达式实际上被解释为您的代码是

'use strict';

for (var i = 1; i <= 2; i++) {
    let j = i;
    setTimeout( {
        const timeoutHandler = function() {
            console.log(j);
            debugger;
        };
        timeoutHandler
    }, 1000);
}

(好吧,调用表达式中的这个块作用域显然在语法上没有效果,但我希望你能理解它)