2012-02-23 111 views
-1

可能重复:
Javascript Shorthand - What Does the '||' Operator Mean When Used in an Assignment?这段代码是什么意思?

var variable = obj1 || obj2;

莫非这?

var variable; 

if (obj1) 
{ 
    variable = obj1; 
} 
else if (obj2) 
{ 
    variable = obj2: 
} 

它被认为是不好的做法?

+4

可能重复[Javascript速记 - 什么是'||'运算符意味着什么时候在作业?](http://stackoverflow.com/questions/4511301/javascript-shorthand-what-does-the-operator-mean-when-used-in-an-assignme)和[JavaScript | |操作者(http://stackoverflow.com/questions/1378619/javascript-operator)。 – 2012-02-23 17:06:24

回答

5

|| operator返回其左侧在解析成为一个真正的价值,否则它返回它的右手边。

因此,这意味着相同的:

var variable; 
if (obj1){ 
    variable = obj1; 
} else { 
    variable = obj2: 
} 

其他否则,如果

这是一种常见模式,通常不被认为是不好的做法。

问题是,你需要确保你想要if (obj)而不是if (typeof obj !== "undefined")

0

是啊,这是什么意思,这是很好的做法

||是一个逻辑OR,所以如果obj1 = falsefalse OR obj2所以变量等于OBJ 2

0

如何||表达式作品

表达式a || b的值由最后一次部分评估确定,以确定布尔事实。

false || 1评估为1是评估的最后一个。

true || 0评估为true,因为它是最后一个评估。

如何物镜在布尔上下文

评价对于布尔值的上下文中一个对象,对象进行评估,以true除非空。这意味着即使是{} === true

结合上述两个解释,var variable = obj1 || obj2obj1obj2中的第一个无null对象指定为variable