使用||在javascript中初始化对象操作者

时间:2011-08-19 07:59:17

标签: javascript

有时我会在javascript代码中看到类似这样的内容:

var myObj = myObj || {};

那么,这里究竟发生了什么?我想|| operator返回true或false,但它不正确。

7 个答案:

答案 0 :(得分:28)

||运算符如果计算结果为true,则返回左操作数,否则计算并返回右操作数。换句话说,a || b相当于a ? a : b,但a仅评估一次。

答案 1 :(得分:5)

了解||运算符,让我们首先看一个相当基本的例子。逻辑OR运算符可用于为定义的变量提供默认值,如下所示:

 var bar = false,  
 foobar = 5,  
 foo = bar || foobar; // foo = 5  

在这种情况下,如果bar被认为是假的,foo将只被赋予foobar的值。假值可以被认为等于0,假,未定义,空,NaN或空(例如“”)。

答案 2 :(得分:2)

除非已定义,否则初始化myObj。

答案 3 :(得分:1)

||是一个短路运营商。如果第一个操作数的计算结果为true,则不计算第二个操作数。

因此JS a || b类似于c#a ?? b

答案 4 :(得分:1)

OR op(||)将返回第一个非空/假参数。

在指定的情况下,如果myObj为false或null,则将其设置为空对象({}括号用于创建对象)

答案 5 :(得分:1)

您可以使用此构造来获取不是nullundefined等的对象。这用于稍后在需要它的代码中使用myObj的情况成为一个对象。如果出于某种原因,myObj在此行之前未定义,则重新分配该文件会使其保留undefinednull,在这种情况下,会为其分配{}。< / p>

您可以将其视为:

// If the object is already defined
if (myObj)
    var myObj = myObj;
// It was undefined or null, so assign an empty object to it.
else
    var myObj = {};

答案 6 :(得分:0)

如果myObj未定义或为null,则它会评估||右侧创建新空对象的表达式

所以myObj如果不是null则是myObj,如果myObj为null则是空对象

我希望你明白我的意思