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控制台来运行测试.
这是 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 引擎对常量提升非常严格。
我认为这是有道理的。
| 归档时间: |
|
| 查看次数: |
1250 次 |
| 最近记录: |