let变量JavaScript的范围

时间:2018-11-04 18:42:40

标签: javascript methods this let

根据我对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是否不属于所包含子块的一部分?

0 个答案:

没有答案