2011-11-09 60 views

回答

18

基本上,var聲明一個變量,你也可以同時分配給它。

沒有var,它分配給變量。分配將分配給現有變量或創建該名稱的全局變量,然後分配給它。

功能之外,這意味着如果變量不存在,就沒有實質性區別(原則上)。在這種情況下,都會創建全局變量foo

以內有一個函數,有很大的差別。第一個創建函數的局部變量,不管它是否存在於其他地方。

第二個將創建一個全局變量,如果它不存在,或者只是更改值,如果它存在。

爲了保持代碼儘可能模塊化,你應該始終使用除非var你特別想改變現有的全局變量。這意味着用var聲明函數外的所有全局變量,並用var聲明所有本地變量。

+0

功能外也有區別。你可以這樣做obj.prop,你不能做var obj.prop! –

+0

@Chintan,這可能更多的是因爲'obj.prop'實際上不是一個新變量,而是一個現有'obj'變量的屬性。 – paxdiablo

1

在第一種情況下,foo將在其定義的相同範圍內可用,即它將是局部變量。 第二種情況foo是一個全局變量,位於全局範圍內。

5

foo = 1將把foo放在定義了foo的最後一個範圍或全局範圍內。 var foo = 1會將變量放入當前範圍(即當前函數)。

+0

@pst:你是​​什麼意思? – Ryan

+0

更新後的語言要好得多:) – 2011-11-09 02:00:51

+0

@pst:好的,我原本打算告訴你:「我在發佈後編輯了大約3秒鐘,對不起:)」但是後來我儘管說你的意思是http://jsfiddle.net/minitech/sEkYt/ – Ryan

相關問題