【发布时间】:2017-05-11 06:40:32
【问题描述】:
以下代码将输出“1”。但是,关键字“let”不应该不使 x 成为全局变量,从而使其对 das() 不可见吗? let 应该将变量的范围限制为仅声明它们的块,但是在这里,我看到一个内部函数可以访问“let”变量,即使 x 是在其范围之外声明的。这怎么可能?
function letTest() {
function das () {
console.log(x);
// How does this function have access to a let variable declared outside its scope?
}
let x = 1;
das();
}
letTest();
【问题讨论】:
-
我认为这是因为
das在定义x的块内.. 就在两个块内,但其中一个也围绕let所以没关系跨度> -
x不必是 global 以便在嵌套函数中可见;它只需要在本地范围或某个外部范围内即可。let声明不仅将可见性限制在本地范围内;它是本地范围加上任何嵌套范围。 -
换句话说,嵌套函数内的代码是包含
let的块的一部分。 -
也许我错了,但我认为这与吊装无关。
标签: javascript variables let