根据我对JavaScript和 let 的了解,在整个范围内定义了此关键字后,就可以使用用此关键字定义的变量(不一定是像 var )。
引用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let
“ let声明的变量的作用域在定义它们的块以及任何包含的子块中。”
据我了解,直接在方法(成员函数)中,此引用对象,但在所有其他函数中,此均引用全局对象。 鉴于此,我对以下结果感到困惑:
let a = 7;
let b = {
a: 13,
foo: function() {
(function() {
console.log(this.a);
})();
}
};
b.foo();
我期望值 7 。相反,我在Chrome上显示 undefined 。在Firefox上似乎没有任何记录。
如果我将IIFE替换为仅在foo中定义的函数的调用,则会得到相同的行为。任何人都可以澄清这里发生了什么吗?该IIFE是否不属于所包含子块的一部分?