2012-11-18 60 views
3

我見過的JavaScript命名空間定義爲:使用||的Javascript名稱空間

var AppSpace = AppSpace || {}; 

和/或

var namespace = {}; 

誰能告訴我:

  1. 有什麼區別?
  2. 什麼是||在第一個例子中使用?
  3. 爲什麼在第一個例子中,AppSpace使用過兩次?
  4. 哪個是首選語法?
+0

http://elegantcode.com/2011/01/26/basic-javascript-part-8-namespaces/ –

+0

可能的重複:http://stackoverflow.com/questions/1378619/javascript-operator – elclanrs

+0

不重複 - 更多的是如何||運算符用於名稱空間。這種用法讓Java開發人員感到困惑,因爲在Java中,您不能以這種方式對命名空間執行操作。瞭解名稱空間是JavaScript中的第一類對象是一種思維方式的變化,對於知道非常有用。 –

回答

9

||操作是在Javascript如果左操作數是truthy返回其左操作數logical or,否則返回其右操作數。第一個語法是最好的,因爲你可以重複使用它在你的代碼是多個地方(比如在不同的文件),當你不知道,如果命名空間已被定義或沒有:

var AppSpace = AppSpace || {}; // AppSauce doesn't exist (falsy) so this is the same as: 
           // var AppSauce = {}; 
AppSauce.x = "hi"; 

var AppSpace = AppSpace || {}; // AppSauce does exist (truthy) so this is the same as: 
           // var AppSauce = AppSauce; 
console.log(AppSauce.x); // Outputs "hi" 

對戰:

var AppSpace = {}; 
AppSauce.x = "hi"; 

var AppSpace = {}; // Overwrites Appsauce 
console.log(AppSauce.x); // Outputs undefined 
+0

完美!非常感謝 –

+0

@AdamDavies不客氣:) – Paulpro

+0

我猜你在寫解釋時很餓。但是,謝謝,我正在考慮||很可能是這樣做的,但無法追查確認。 – Timberline