为什么ES6不鼓励用var声明变量了
在函数作用域或全局作用域中通过关键字var声明的变量,无论实际上是在哪里声明的,都会被当成是在当前作用域顶部声明的变量。
- 举个栗子:
function getValue(condition){
if(condition){
var value = "blue";
return value;
}
else{
return null;
}
}
这段代码按正常的眼光来看待,只有当condition的值为true的时候,变量value才会被创建,但是实际上,无论condition的值是什么,变量value都会被创建。在预编译阶段,JavaScript引擎会将上面的代码修改成这样。
function getValue(condition){
var value;
if(condition){
value =