我知道最常见的做法是将var a,b;
置于顶部,但我想提取所有可能的角色(在JS Uglify上运行之后),似乎它们不会删除不必要的{{ 1}}初始化
我想知道以下任何一项是否会导致问题,建议使用哪种
案例1:
var
案例2:
if(condition){
var a=-1;
var b="++";
}else{
var a=1;
var b="--";
}
案例3:
if(condition){
var a=-1;
var b="++";
}else{
a=1;
b="--";
}
答案 0 :(得分:7)
这是应该的方式:
var a,b;
if(condition)
{
a = -1;
b = "++";
}
else
{
a = 1;
b = "--"
}
应始终使用var关键字在函数顶部声明变量。变量范围位于函数级别,而不使用var使其成为全局变量。在顶部声明它总是确保你知道整个函数的范围(并且无论如何),所以当另一个程序员查看它并且不知道范围是在函数级别时,他/她不会感到困惑并认为范围仅在条件范围内。
答案 1 :(得分:4)
没关系,因为JavaScript具有功能范围,而不是词法范围。
您可以将其视为每个var ...;
语句被分流到他们所处的函数的顶部。(这就是我的工作,至少。)
我将代码编写为
var a, b;
if(condition) {
a = -1;
b = "++";
} else {
a = 1;
b = "--";
}