2014-12-12 59 views
0

我試圖理解var myObj = myObj || {};的這一點,發現thisthis文章解釋它。但我仍然沒有看到我需要它的情況。這些文章似乎解決了它的實際邏輯,因爲它與a ? a : b等價 - 我明白了。何時和爲什麼使用JS null合併運算符

例如,我創建一個HUD對我的比賽,

game.HUD = game.HUD || {}; 

game.HUD.Container = me.Container.extend({ 
//... 

爲什麼我就不能創建一個沒有使用game.HUD = game.HUD || {};對象?

+0

我不確定'var x = x || y'有任何有用的含義。 'var x = y || z'的確如此。 – tadman 2014-12-12 23:08:58

+0

只要放下這條線,你會立即明白你爲什麼需要它。 – Sirko 2014-12-12 23:09:40

+3

Incase game.HUD已被定義,您不會銷燬現有數據或將其設置爲像對象一樣的數組。 – britter 2014-12-12 23:09:53

回答

3

如果你知道你需要初始化game.HUD某些,那麼你不需要使用你的代碼片段。

如果有可能game.HUD保留了您不想覆蓋的先前值,那麼您將使用示例代碼。

1

這主要是一件安全的事情。你想:

  1. ...下面的代碼能夠使用game.HUD不管它以前初始化
  2. ...這分配任何領域,如果game.HUD已經初始化保持。

如果game.HUD已經存在,那麼

game.HUD = {}; 

將消滅分配給它的任何數據。

game.HUD = game.HUD || {}; 

初始化如果有必要,否則離開單幹,這樣無論哪種方式

game.HUD.Container = ... 

作品。