VS2008 中的以下代码给我一个“变量已定义”警告:
if (someVar) {
var a = 1;
}
else {
var a = 2;
}
警告在第二个 var a = ...
上给出。为了解决这个警告,我已经做了:
var a;
if (someVar) {
a = 1;
}
else {
a = 2;
}
但是这是正确的方法吗?
谢谢
阿杰
最佳答案
是的,这是正确的做法。 JavaScript 中没有 block 作用域;只有函数作用域和全局作用域。
您还可以使用匿名函数为每个“ block ”提供功能范围,尽管在这种情况下不太实用:
if (someVar) {
(function () {
var a = 1;
})();
}
else {
(function () {
var a = 2;
})();
}
顺便说一句,这也是为什么不鼓励使用 for (var i = 0; ...)
而使用 var i; 的原因。 for (i = 0; ...)
,以避免同一函数中的 2 个连续循环都尝试声明变量 i
关于javascript - VS2008中变量声明警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2407760/