看一下在线源代码,我在几个源文件的顶部看到了这个.
var FOO = FOO || {};
FOO.Bar = …;
但我不知道是什么|| {}.
我知道{}是等于new Object(),我认为这||是为了"如果它已经存在使用其值,否则使用新对象.
为什么我会在源文件的顶部看到这个?
可能重复:
什么是|| 操作员呢?
也许有人可以提供更好的代码片段,但||下面的含义是什么?:
var time =  $(el).data('start') || new Date();
它是一个or运算符,如果是这样,变量可以有两个不同的值有什么意义呢?
来自Google Analytics分析跟踪代码:
var _gaq = _gaq || [];
这是如何运作的?
它是条件变量赋值吗?这跟说:
if( !(_gaq) ) {_gaq = []; }
?
请有人向我解释这行代码的作用:
var list  = calls[ev] || (calls[ev] = {});
我最好的猜测:
它使用calls.xxx的值设置变量"list",其中xxx是变量ev.如果调用[ev]不存在,那么它将其创建为空对象并将该空对象分配给"list".是对的吗?
为什么要使用括号?我在哪里可以找到有关使用||的更多信息 何时设置变量,并在此上下文中使用括号?谢谢!
对"||"的行为有什么解释 运算符(逻辑OR),在JavaScript中使用它false和undefined在两侧使用它?
1)
> false || undefined
undefined
2)
> undefined || false
false
JavaScript中的闭包(脚本)实现称为"wisp"有这个片段:
(get [1 2 3] 1) ; => ([1, 2, 3] || 0)[0]
这意味着wisp代码在JavaScript中编译为:
([1, 2, 3] || 0)[0]
但为什么|| 0那里有部分?
我有一段JavaScript代码显示:
function(next, feather) {
  var l = Number(171) + (next || 0);
  var m = Math.max(1, l - 9);
  return {
    lc: 300 * (l + 1) * m + (5 * feather || 0)
  }
}
现在我已经简化了一点.但任何人都可以解释"|| 0"的作用吗?据我所知,它什么也没做.
(注意我用Number(171)替换了一个函数,因为该函数有效地返回一个数字,羽毛也应该是一个数字,大部分时间是0,有时是1).