2015-05-17 169 views
4

變量可以聲明的方式有什麼區別?聲明變量之間的區別

a = 5; 

var a = 5; 

是否與範圍界定還什麼關係?

+1

a = 5; a是全球性的; var a = 5; a是本地的; – Petroff

回答

1

a = 5將聲明來自任何範圍的全局變量。 var a = 5將在聲明的範圍內聲明一個變量。

a = 5; //global variable 
var b = 6; // global variable 
function foo(){ 
    var c = 7; //local variable 
    d = 9; //global variable 
    } 
+0

謝謝你的例子。 – kamal

2

var a將創建局部變量。另一個將創建和/或設置一個全局變量。

大多數情況下,你最好創建局部變量,除非你絕對需要創建一個全局變量。

1

一個聲明一個變量,另一個沒有。

var關鍵字用於聲明變量,並且該變量在當前範圍內創建。

如果您爲尚未存在的變量賦值,則會在全局範圍內隱式創建該變量。

1
a = 5; 

這將設置一個變量,如果變量尚未被聲明,那麼它將在全局範圍內創建(您可能不想)。

var a = 5; 

這將創建並設置一個變量。如果在函數內,變量將作爲函數作用域中的局部變量創建,否則將全局創建。

另外值得注意的是,var a = 5的語句將被提升到函數的頂部。即

function() { 
    doSomestuff(); 
    a = 4; 
    var a = 5; 
    doOtherStuff(); 
} 

實際上變成

function() { 
    var a = 5; 
    doSomestuff(); 
    a = 4; 
    doOtherStuff(); 
} 

更多信息,請參見https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var

另外值得注意的是,如果你使用嚴格模式,你不能用a = 5來聲明一個變量。你必須使用var關鍵字。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode

這是值得做的,因爲把你的錯誤,無法檢測到明顯的錯誤。

相關問題