这是什么意思:var _gaq = _gaq || [];

时间:2010-06-23 18:55:37

标签: javascript

4 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

_gaq || []

如果表达式是非假值(我的意思是不是0,也不是假,也不是''),或者是另一种情况下的空数组,则表达式将返回_gaq。

var _gaq = _gaq || [];

始终将[]设置为_gaq。 我从我的firebug控制台以这种方式测试了它:

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

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

答案 3 :(得分:1)

我会将其解释为:

  

如果_gaq已经存储了一个不可转换为false的值(例如非空数组),请取该值;否则,make _gaq引用一个空数组。“

Douglas Crockford在他的书 Javascript - The Good Parts 中写下了以下内容:

  

运算符||可用于定义默认值[...]。

一些背景信息:

  • 在JavaScript中,有一些值在布尔表达式中计算为false;嫌疑人是数字0,空字符串NaN,未定义的值(请注意undefined不是关键字!),以及false本身。

  • AFAIK,JavaScript的逻辑OR(||)运算符使用短路,即如果OR表达式中的第一项是true,则第二项不会被评估。)