let / const吊起是意外行为吗?

时间:2019-06-27 12:15:46

标签: javascript ecmascript-6

查看此代码:

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”

这是正确的行为吗?这是解决这个问题的方法吗?

0 个答案:

没有答案