在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