查看此代码:
var x = function() {
let y = 1;
var x1 = function() {
y = 5;
var y = 10;
console.log(y);
}
x1();
console.log(y);
}
x();
因此,正如我们所期望的,我们在 x1 范围内提升了 y 变量,因此y = 5;
行将值设置为x1范围和预期输出将为10, 1
。
因此,我们可以预期,如果将var y = 10;
更改为let
,则y = 5
行将从y
范围更改x
。但是:
var x = function() {
let y = 1;
var x1 = function() {
y = 5;
let y = 10;
console.log(y);
}
x1();
console.log(y);
}
x();
启动x()
后,我看到:
未捕获的ReferenceError:初始化前无法访问“ y”
这是正确的行为吗?这是解决这个问题的方法吗?