可能重复:
In Javascript, what does it mean when there is a logical operator in a variable declaration?
what’s the javascript “var _gaq = _gaq || []; ” for ?
这个javascript语法是什么意思?
var _gaq = _gaq || [];
答案 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
,则第二项不会被评估。)