javascript:|| (或)变量定义?

时间:2011-10-18 23:00:01

标签: javascript

  

可能重复:
  What does this construct (x = x || y) mean?

很多时候我可以看到变量设置如此

var d = d || {}

var = var || []

想到了一些问题

  1. 它主要用途是什么?
  2. 如何在变量define中使用OR?

2 个答案:

答案 0 :(得分:3)

如果左侧是 falsy (例如undefined,如果没有传递函数参数,则会评估右侧)。评估的最后一面是用JavaScript返回的,与返回 true false 的某些语言不同。这很方便,为什么要使用这个结构。

它利用了short circuit evaluation

使用它的主要原因是,如果未传递函数的参数,则提供合理的默认值。

var a = function(b) {
    b = b || [];
}

在上面的代码示例中,如果未传递b,则默认为空白数组([])。但是,如果我通过0或其他 falsy ,它也会成为空白数组。小心这个。

答案 1 :(得分:2)

||运算符如果为真则返回左侧,如果左侧不为真,则返回右侧。

所以:

var d = d || {}

快速说一句:

var d;
if (!d) {
    d = {};
}