【问题标题】:Is it a bug in firefox developer edition?这是Firefox开发者版中的错误吗?
【发布时间】:2016-11-10 13:17:55
【问题描述】:

看看下面的代码:

var c = 50;

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

此代码预计会引发 ReferenceError,它确实会引发。但是在控制台中,带有异常的消息让我大吃一惊。它说:

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

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

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

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

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

【问题讨论】:

  • 如果您认为这是一个错误,请提交错误报告,他们会说是或否。
  • 发布版本 47.0.1 中也存在该错误
  • 最少的代码是var x; { y; let y; }
  • @Oriol 我报告了这个错误。这是链接:bugzilla.mozilla.org/show_bug.cgi?id=1285710
  • 是的,我在 54.0a2 版本中对此进行了测试,请参阅ReferenceError: can't access lexical declaration 'y' before initialization。我投票关闭它,因为它不能再被复制了。

标签: javascript firefox console.log referenceerror firefox-developer-edition


【解决方案1】:

本帖是根据this meta post发的,而不是被关闭(见this)。


正如@Martin Smith@Sam Onela 所说(12),此问题已在版本 53/54 中得到解决。 Relevant bugzilla report,由Devashish制作(原创海报)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 2019-07-12
    • 2018-09-22
    • 2015-07-21
    相关资源
    最近更新 更多