我正在调查JavaScript中let
块范围的工作情况,特别是浏览器的调试视图如何显示信息
在let
循环中使用for
创建一个块范围,回调function timeoutHandler()
可以访问,这一切都很好
在 Chrome开发工具中,[[作用域]]如下所示:
在 Firefox开发者工具中,列出了一个额外的块范围,其中包含timeoutHandler:timeoutHandler()
个属性。我只希望看到块范围j:1
这个额外的块指的是什么?
只是想知道,因为我预期的词汇范围会在Chrome调试中显示,但在Firefox调试中没有预期的那样
答案 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);
}
(好吧,调用表达式中的这个块作用域显然在语法上没有效果,但我希望你能理解它)