【问题标题】:what does this mean: var _gaq = _gaq || []; [duplicate]这是什么意思:var _gaq = _gaq || []; [复制]
【发布时间】:2011-03-07 11:39:40
【问题描述】:

【问题讨论】:

  • IMO 我认为这只是糟糕的代码,如果您使用 var 声明声明 _gaq,它将隐藏 any 其他名为 _gaq 的变量,更高作用域链...
  • @CMS – 除非您已经在全局范围内,否则就是这种情况。但即便如此,var 也没有必要。
  • @Marcel,是的,使用var 与不使用var 之间的全局代码的唯一区别是,当您使用var 时,标识符绑定到变量对象(这是全局对象本身对于全局代码)它被标记为不可删除。例如。 var foo = ''; bar = ''; 然后 delete foo == false;delete bar == true;

标签: javascript


【解决方案1】:
_gaq || []

是一个表达式,如果它是一个非假值(我的意思是不是 0,也不是假,也不是'')或在其他情况下是一个空数组,它将返回 _gaq。

var _gaq = _gaq || [];

始终将 [] 设置为 _gaq。 我从我的萤火虫控制台以这种方式对其进行了测试:

_gaq = 'crazy value';
(function(){var _gaq = _gaq || []; 
            console.log(_gaq);
 })();

记住 _gaq 可以是在全局命名空间中定义的变量。但事实并非如此。

【讨论】:

  • 我认为这是最好的答案,应该这样标记(除非提到的代码 is 在全局范围内运行,我认为它是)。它清楚地阐述了 CMS 对这个问题的评论。如果可以的话 +10。
【解决方案2】:

如果 _gaq 未定义,这是将 _gaq 设置为空数组的简便方法。它可能用于为函数的参数提供默认值。

【讨论】:

    【解决方案3】:

    这意味着将_gaq的值分配给_gaq,除非它未定义,在这种情况下_gaq将是一个空列表。

    【讨论】:

    • 除非_gaqundefinednull0、一个空字符串、NaNfalse...
    猜你喜欢
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 2015-03-12
    相关资源
    最近更新 更多