16

看看下面的代码:

var c = 50;

{
    console.log(y);
    let y = 50;
}

这段代码预计会抛出一个 ReferenceError 并且确实如此。但是在控制台中,带有异常的消息让我大吃一惊。它说:

ReferenceError:在初始化之前无法访问词法声明'c'

在代码c中是第一个声明的变量。错误消息表明 . 的声明有问题c。这显然是y块内的变量,导致异常。我们不能使用let在声明之前使用声明的变量。当我在第一行声明另一个变量时,例如test,错误消息变为:

ReferenceError:在初始化之前无法访问词法声明“test”

我错过了什么还是我对错误的看法是正确的?我有最新的 Firefox 开发者版(49.0a2 版)。

另一件值得注意的事情是该块只是一个封闭块,它不是函数的主体。

4

1 回答 1

1

这个帖子是根据这个元帖子制作的,而不是被关闭(见这个)。


正如@Martin Smith@Sam Onela所说(1、2 ,这个问题在版本53/54 中得到解决。相关 bugzilla 报告,由Devashish 制作(原始海报)。

于 2017-04-10T12:35:48.877 回答