我發現在Javascript中聲明變量時似乎沒有必要使用關鍵字'var'。事實上,我沒有發現完全忽略它的不良副作用。是否有必要使用關鍵字'var'在Javascript中聲明變量
也許這是不好的形式,但有人可以解釋爲什麼這將是必要的嗎?
我發現在Javascript中聲明變量時似乎沒有必要使用關鍵字'var'。事實上,我沒有發現完全忽略它的不良副作用。是否有必要使用關鍵字'var'在Javascript中聲明變量
也許這是不好的形式,但有人可以解釋爲什麼這將是必要的嗎?
使用關鍵字var
可確保您的變量的範圍是正確的。如果您不使用關鍵字,那麼JavaScript會自動將該變量創建爲全局範圍,這可能會在稍後執行頁面時導致問題。
name = 'Bic'; // implicitly global
function myFunc() {
var name = 'John'; // this variable is scoped here
console.log(name); // John
getName(); // Bic
}
function getName() {
console.log(name); //Bic
}
myFunc();
getName();
在上面的代碼中,我聲明瞭一個全局名稱和一個作用域名。請注意,在myFunc()完成執行後,全局名稱將繼續保留。 name
是大多數HTML元素的屬性。在這個特定的答案中,我沒有使用var
關鍵字的名稱聲明可能會對頁面的執行產生不利影響。 name
的值會被拋出作用域,這會影響目標元素和其他內容。如果您看一下這個Fiddle,並在加載後再次單擊運行,您會注意到它會自動打開一個新選項卡。這是因爲名稱的原始值已被破壞,並且頁面不知道真正打開的位置。
作爲一般規則,最好總是用var
關鍵字聲明變量,因爲這樣可以更容易地遵循該變量的範圍,避免它們可能導致的無法預料的問題。
正如Pointy指出的那樣,'use strict'編譯指示(在ECMAScript 5中引入)實際上禁止在沒有var
關鍵字的情況下聲明變量。
而在「嚴格」模式下,未聲明的變量會導致錯誤。 – Pointy
如果你沒有聲明它,也許你正在訪問一個全局變量。要小心,因爲你會得到不希望的副作用。
根據定義,聲明變量需要var關鍵字。還有,雖然創建變量的其他方法,比如包括它們在正式的參數列表:
function foo(a, b, c) {...}
這裏一個,b和ç創建或多或少彷彿他們與申報var。在其他答案中註明了創建變量的不良影響var。
這是必要的,你絕對應該用'var'聲明變量(在適當的範圍)。在「嚴格」模式下,不聲明變量是運行時錯誤。 – Pointy
隨機污染全球範圍非常糟糕。 –
http://blog.safeshepherd.com/23/how-one-missing-var-ruined-our-launch/ – Andy