Javascript VS2008中的变量声明警告

Javascript VS2008中的变量声明警告,javascript,Javascript,VS2008中的以下代码向我发出“变量已定义”警告: 警告出现在第二个变量a=…上。为了纠正这一警告,我采取了以下措施: var a; if (someVar) { a = 1; } else { a = 2; } 但这是正确的方法吗 谢谢 是的,这是正确的方法。javascript中没有块作用域;只有功能范围和全局范围 您还可以使用匿名函数为每个“块”函数作用域赋值,尽管在这种情况下不太实用: if (someVar) { (function () { var a =

VS2008中的以下代码向我发出“变量已定义”警告:

警告出现在第二个
变量a=…
上。为了纠正这一警告,我采取了以下措施:

var a;
if (someVar) {
  a = 1;
}
else {
  a = 2;
}
但这是正确的方法吗

谢谢


是的,这是正确的方法。javascript中没有块作用域;只有功能范围和全局范围

您还可以使用匿名函数为每个“块”函数作用域赋值,尽管在这种情况下不太实用:

if (someVar) {
  (function () {
     var a = 1;
   })();
}
else {
  (function () {
     var a = 2;
   })();
}

作为旁注,这也是为什么
for(var i=0;…)
不鼓励使用
vari;对于(i=0;…)
,为了避免在同一个函数中出现两个连续循环,两个函数都试图声明变量
i

是,这是正确的方法。javascript中没有块作用域;只有功能范围和全局范围

您还可以使用匿名函数为每个“块”函数作用域赋值,尽管在这种情况下不太实用:

if (someVar) {
  (function () {
     var a = 1;
   })();
}
else {
  (function () {
     var a = 2;
   })();
}

作为旁注,这也是为什么
for(var i=0;…)
不鼓励使用
vari;对于(i=0;…)
,为了避免在同一个函数中出现两个连续循环,两个函数都试图声明变量
i

,这取决于以后如何使用这些变量

如果它们与同一个对象相关,那么这是正确的方式


如果它们与不同的对象相关,那么我将重命名这些变量,因为这将防止将来出现维护问题。

这取决于以后如何使用这些变量

如果它们与同一个对象相关,那么这是正确的方式


如果它们与不同的对象相关,那么我会重命名变量,因为这将防止将来出现维护问题。

任何一种方法都是完全有效的(两个示例都确保变量是用
var
关键字声明的),但一般来说,最好的做法是在当前代码块的顶部声明变量,如第二个示例中所示。

任何一种方法都是完全有效的(两个示例都确保使用
var
关键字声明变量),但一般来说,最好的做法是在当前代码块的顶部声明变量,就像你的第二个例子