Ruf*_*fus 5 javascript ecmascript-6
我知道let是声明块范围局部变量,但为什么它不支持重新声明和挂起var呢?
这个限制的设计目的是什么?
(function(){
'use strict';
alert(a); // undefined
var a;
})();
(function(){
'use strict';
alert(a); // error
let a;
})();
(function(){
'use strict';
var a;
var a;
alert(a); // undefined
})();
(function(){
'use strict';
let a;
let a; // error
alert(a);
})();
Run Code Online (Sandbox Code Playgroud)
我们的想法是创建一个比原始工具更明确,更严格的工具var.
作为一个人,以下是有效的JavaScript,但几乎无法理解:
alert(a); // Where does a come from? Why does this not throw?
/* 1000 lines later, or even in an entirely different file */
var a;
Run Code Online (Sandbox Code Playgroud)
此外,想象代码var在同一范围内对同一个变量有5个声明,有些在if语句中,有些在fors中.哪个是第一个?最终会创造什么价值?
这个想法是修复一些不好的部分var.