2017-07-18 48 views
0

我真的很想知道除了使代碼在Object.list = {}和list = {}之間更加結構化之外是否有區別?Object.list = {}和list = {}之間有區別嗎?

實施例:

var Player = function(){ 
    } 
    Player.list = {}; 
    var list = {}; 
+6

一個將其添加爲PROPERT選手對象(功能),另一種宣稱它作爲一個獨立的變量 –

+0

那些2件代碼並不等同。 – csmckelvey

+0

我更加好奇你爲什麼會認爲它們是相同的。 –

回答

0

在聲明如下變量:

var list = {}; 

變量是window全局對象上創建的,它相當於下面的代碼:

window.list = {}; 

它的問題是有可能在頁面上包含兩個或更多位置中定義的相同變量的JavaScript文件,這會導致名稱衝突問題。爲了避免這種情況,你可以聲明自己的名字空間,並定義一個新的變量有

var Player = function(){ 
} 
Player.list = {}; 
+0

值得注意的是,如果一個變量在函數的作用域外被聲明,那麼它只是全局變量。這就是在模塊出現之前,在IIFE中包裝代碼塊的原因。 – ste2425

1

Player.list限定listPlayer功能。因此,它只在該函數中有作用域,並且不能在函數之外使用(沒有明確指出它是全局的)。相反,var list允許您默認全局使用list

相關問題