在VS2008下面的代码给了我一个“变量已经被定义”警告:变量声明警告在VS2008
if (someVar) {
var a = 1;
}
else {
var a = 2;
}
警告后第二var a = ...
给出。为了根治这一警告我做:
var a;
if (someVar) {
a = 1;
}
else {
a = 2;
}
但是,这是做了正确的方法是什么?
感谢,
AJ
在VS2008下面的代码给了我一个“变量已经被定义”警告:变量声明警告在VS2008
if (someVar) {
var a = 1;
}
else {
var a = 2;
}
警告后第二var a = ...
给出。为了根治这一警告我做:
var a;
if (someVar) {
a = 1;
}
else {
a = 2;
}
但是,这是做了正确的方法是什么?
感谢,
AJ
是的,这是做了正确的道路。在javascript中没有块范围;只有功能范围和全球范围。
,你也可以给使用匿名函数,每个“块”的功能范围,虽然它不是在这种情况下非常实用:
if (someVar) {
(function() {
var a = 1;
})();
}
else {
(function() {
var a = 2;
})();
}
作为一个方面说明,这也是为什么for (var i = 0; ...)
赞成var i; for (i = 0; ...)
气馁,以避免同一函数中的两个连续循环都尝试声明变量i
这取决于您以后如何使用这些变量。
如果它们涉及同一个对象,那么这是正确的方法。
如果它们涉及不同的对象,那么我会重命名这些变量,因为这样可以防止将来出现维护问题。
无论哪种方式都是完全有效和正确的(两个示例都确保使用var
关键字声明该变量),但通常最佳做法是在当前代码块的顶部声明变量,如第二个示例中所示。
很好的解释。 – OregonGhost 2010-03-09 09:14:11
感谢您的详细解答。 – 2010-03-09 09:58:40