2012-07-17 64 views
3

它發生在我,我不知道是什麼的範圍逗號delimeted變量

var foo='bar', 
baz = 'bar'; 

範圍。

顯然foo是本地作用域,但是在baz上必須使用var關鍵字才能在本地作用域,或者我的示例已在本地作用域?

+0

看起來如http://stackoverflow.com/questions/1470488/difference-between-using-var-and-not-using-var-in-javascript – yadutaf 2012-07-17 18:36:52

回答

4

它們都將在相同的範圍內結束。

var foo = 'bar', 
    baz = 'bar'; 

只是簡稱:

var foo = 'bar'; 
var baz = 'bar'; 

左右的時間內,例如一個函數,既foobaz將成爲局部變量,即使你只申報var一次。

JSLint這樣的工具實際上預計var關鍵字只能使用一次,所以如果你想遵守這一點,你應該使用第一個例子。

1

這確實是一個非常有趣的問題。 JavaScript充滿了邊界案例。

在這篇博文中:http://scribu.net/blog/javascript-var-keyword-for-php-developers.html,作者給出了一些使用或不使用'var'關鍵字的例子。

爲了使長話短說,

  • 不聲明變量是全球
  • 聲明變量是當地,它允許 「覆蓋」 的全局變量。
+1

有一個逗號亞特酒吧的副本...不是分號。 – jahroy 2012-07-17 18:43:10

+0

http://bonsaiden.github.com/JavaScript-Garden/#function.scopes將人們聯繫到範圍解釋非常有趣:D(至少部分是因爲側邊欄非常漂亮) – Alex 2012-07-17 18:48:06