2011-01-26 73 views
1

做我們必須聲明JS變量是這樣的:JavaScript變量

var x=5; 

或只是簡單的喜歡這個

x=5; 

有什麼區別......它會影響變量的功能?...

回答

4

variable_name = 5將始終把variable_name全局對象(這是window在瀏覽器中)

如果你在global context(=不是函數上下文)兩種說法都基本相同。但是,如果您處於函數上下文中,則var確保只在當前上下文中聲明此變量。

因此,例如:

function foobar() { 
    bar = 55; 
} 

foobar(); 

window.bar === 55 // true 

更好:

function foobar() { 
    var bar = 55; 
} 

window.bar === 55 // false 

結論:一個函數的範圍內總是使用var。這樣可以避免用變量覆蓋/覆蓋全局對象。

+0

+1在瀏覽器環境中提及`window`作爲全局對象。 – alex 2011-01-26 11:03:49

-8

它沒有區別 - 第二個(x = 5;)變量會自動聲明,如果它尚不存在。

但是我總是使用第一個選項。

+1

它肯定會*有所作爲。 `function a(){var x = 1; } x = 0;一個();警報(x.toString());`。擺脫`var`並看看你的結果是否沒有改變。 – cHao 2011-01-27 03:14:48

0

x=5表示該變量(執行後)將成爲全局變量,並且可以被代碼中的所有其他部分(以及其他JavaScript)訪問。

var x=5將只有到它被宣佈塊熟悉的,(和它的後代)

注意,雖然x=5將是全球性的,它只會在此行是執行成爲全球性的! 所以,如果你把它放在一個函數中,它將在該函數被調用後纔會變成全局的(第一次)。