2015-03-02 141 views
0

我一直在使用javascript & jQuery一個月。但我仍然沒有得到使用var變量和沒有聲明var之間的區別。在javascript中爲什麼我們使用var來聲明變量?

var data = 10; 
data = 10; 

以上兩種說法有什麼區別?爲什麼?請詳細向我解釋。

+1

首先聲明一個變量並分配值。在第二行中,您只需將新值賦給已存在的變量,該變量在第二行data = 10中保存數據 – virendrao 2015-03-02 09:35:07

+0

;你只是重新分配數據變量來保存價值10 .. – Lucky 2015-03-02 09:36:39

+0

你試過谷歌這個? [使用問題的標題可返回相當多的相關結果。](https://www.google.com/search?q=In+javascript+why+we+use+var+for+declaring+variable%3F&ie = utf-8&oe = utf-8&gws_rd = cr&ei = Zi_0VMX_Dcr3UInSgugO) – 2015-03-02 09:37:33

回答

2

聲明的變量,而不var關鍵字將使全球性的,這意味着它將適用於所有模塊中已聲明的功能和對象。不用說,這會造成很多麻煩,應該避免。

聲明與var關鍵字變量將限制變量它在聲明範圍內的範圍。

+0

聲明一個不帶var關鍵字的變量會使其成爲全球。真? – dsharew 2015-03-02 09:39:42

0

我們使用它,因爲它是一個語言結構,以提高可讀性,從「舊的」動態類型的莖語言(如初學者的所有符號指令代碼,又名鹼性。)

變種類似,從語法角度看基本的「暗淡」的語句。

它被認爲是使用它由於事實,如果它是一個範圍內省略它會傳播到全球範圍內最好的做法(雖然有,如果在全球範圍內使用絕對沒有任何影響。)

2

區別在於用「var」關鍵字在當前範圍中聲明該變量。在頂級範圍(窗口)中,您當然不會注意到太多差異。我認爲,一個例子是使更清楚:

// declares "data" on window scope 
var data = 10; 

function foo() { 
    // overwrites the "global" data to 20. 
    data = 20; 

    // declares a scoped variable "scopedData" inside of this function and sets it to 25 
    var scopedData = 25; 

    alert(data); 
    alert(scopedData); 
} 
// scoped data is undefined here because it was scoped to the function. 
alert(scopedData); 

另外請注意,所有的「變種」的聲明必須包含在其範圍內,並且執行向上移動將開始的範圍是獨一無二的。 請參見本文的詳細信息:http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html

相關問題