在这种情况下正确初始化变量的方法?

时间:2012-03-30 19:16:39

标签: javascript variables initialization

我知道最常见的做法是将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="--";
}

2 个答案:

答案 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 = "--";
}