在这种情况下初始化变量的正确方法?
据我所知,最常见的做法将是把var a,b;
在上面,但我想提取每一个可能的字符(在JS丑化运行后),似乎并没有删除不必要var
初始化在这种情况下初始化变量的正确方法?
我想知道是否有下面的会导致问题和建议
案例1:
if(condition){
var a=-1;
var b="++";
}else{
var a=1;
var b="--";
}
案例2:
if(condition){
var a=-1;
var b="++";
}else{
a=1;
b="--";
}
案例3:
if(condition){
a=-1;
b="++";
}else{
var a=1;
var b="--";
}
没关系,因为JavaScript有函数范围,不是词法范围。
你可以把它看作是每一个var ...;
声明被分流至多他们所在的函数的顶部。(这是我做什么,至少。)
我写的代码为
var a, b;
if(condition) {
a = -1;
b = "++";
} else {
a = 1;
b = "--";
}
这是应该的方式:
var a,b;
if(condition)
{
a = -1;
b = "++";
}
else
{
a = 1;
b = "--"
}
变量应该总是在与var关键字的函数的顶部声明。变量作用域处于函数级别,而不使用var使其成为全局变量。在顶部声明它始终确保您知道范围是针对整个函数的(无论如何),所以当另一个程序员查看它并且不知道该范围是在函数级别时,他/她不会感到困惑并认为范围只在有条件的范围内。
对不起,您可能没有阅读我最后的编辑。我想在缩小后提取每个可能的字符 – Yim 2012-03-30 19:20:01
如果不使用var,它将创建一个全局变量。它不会删除它们,因为它们是必需的。 – kemiller2002 2012-03-30 19:21:33
只是最后一件事,为什么如果我在两个'if/else'上添加'var hi = 1;'我可以在'if/else'之外访问它? – Yim 2012-03-30 19:31:40
取决于你想要什么样的范围。 – c0deNinja 2012-03-30 19:19:18
我不是100%确定,但不会没有'var'的行创建全局变量? – 2012-03-30 19:19:51
你打算在if语句之外使用变量a和b吗? – c0deNinja 2012-03-30 19:20:57