const变量没有为立即调用的函数提升

yea*_*ght 10 javascript scope const hoisting ecmascript-6

我正在玩新的ECMASCRIPT-6 const关键词.我不明白关键字的一个特定行为.

可以说我有两个功能

第一个案例

(function(){
  console.log(_t); 
  const _t=10;
})();
Run Code Online (Sandbox Code Playgroud)

第二个案例

function t(){
  console.log(_y); 
  const _y=11;
}
t();
Run Code Online (Sandbox Code Playgroud)

对于第一种情况,输出是(不明白为什么)

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

对于第二种情况,输出是(罚款)

未定义

第二种情况输出是预期的,但我不知道为什么第一种情况结果会引发错误.可以从错误中推断出变量没有被提升.但为什么?我发现这里const使用块范围.这个范围有什么关系吗?

我正在使用Firefox Developer Version控制台来运行测试.

Yuv*_*raj 4

这是 Firefox 相关问题,如此处所述

Firefox 特定注释

早在 const 出现在 ECMAScript 6 规范中之前,const 声明就已经在 Firefox 中实现了。有关 const ES6 合规性,请参阅错误 950547 和错误 611388。

从 Gecko 36(Firefox 36 / Thunderbird 36 / SeaMonkey 2.33)开始:

{const a=1};a 现在会抛出 ReferenceError 并且由于块作用域而不再返回 1。常量一个;现在抛出一个 SyntaxError(“const 声明中缺少 =”):需要一个初始值设定项。常量 a = 1; a = 2; 现在还会抛出语法错误(“对 const a 的赋值无效”)。

我也在这里发现了一些东西

我认为 Firefox 引擎对常量提升非常严格。

我认为这是有道理的。