何时以及为何使用JS null合并运算符

时间:2014-12-12 23:05:57

标签: javascript null-coalescing-operator

我试图了解var myObj = myObj || {};的要点,并找到了解释它的thisthis文章。但我仍然没有看到我需要它的情况。这些文章似乎解决了它的实际逻辑,因为它等同于a ? a : b - 我明白了。

例如,我为我的游戏创建了HUD,

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

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

为什么我不能在不使用game.HUD = game.HUD || {};的情况下创建对象?

2 个答案:

答案 0 :(得分:3)

如果您确定需要初步确定game.HUD,那么您就不需要使用您的代码段。

如果game.HUD有可能保留您不想覆盖的先前值,那么您可以使用示例代码。

答案 1 :(得分:1)

这主要是安全的事情。你想要:

  1. ...以下代码可以使用game.HUD,无论之前是否已初始化
  2. ...如果game.HUD 已经已经初始化以保留 ,那么 分配的任何字段。
  3. 如果game.HUD已经存在,那么

    game.HUD = {};
    

    会清除分配给它的任何数据。

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

    如有必要,初始化,否则将其单独留下,以便无论如何

    game.HUD.Container = ...
    

    作品。