C++逻辑操做符 与 &&

逻辑与操做符(&&)



var result = true && false;spa


真值表:对象

逻辑与操做符能够应用于任何类型的操做数,而不单单是布尔值。在有一个操做数不是布尔值的状况下,逻辑与操做就不必定返回布尔值;此时,他遵循下列规则:变量

1.若是第一个操做数是对象,则返回第二个操做数;im

2.若是第二个操做数是对象,则只有在第一个操做数的求值结果是true的状况下才会返回该对象;img

3.若是两个操做数都是对象,则返回第二个操做数;错误

4.若是一个操做数是null,则返回null;ab

5.若是有一个操做数是NAN,则返回NAN;undefined

6.若是有一个操做数是undefined,则返回undefined。


逻辑与操做属于短路操做,即若是第一个数可以决定结果,那么就不会再对第二个操做数求值。对于逻辑与而言,若是第一个操做数是false,则不管第二个操做数是什么值,结果都再也不多是true了。


看例子:

var found = true;

var result = ( found && someUndefinedVariable );       //这里会发生错误

alert( result );                                                                    //这一行不会执行

在上面的代码中,当执行逻辑与操做时会发生错误,由于变量someUndefinedVariable没有声明。因为变量found的值是true,因此逻辑与操做符会继续对变量someUndefinedVariable求值。但someUndefinedVariable还没有定义,所以就会致使错误。这说明不能在逻辑与操做中是要未定义的值。若是像下面这个例子中同样,讲found的值设置为false,就不会发生错误了。

var found = false;

var result = ( found && someUndefinedVariable );       //不会发生错误

alert( result );                                                                    //会执行("false")

在这个例子中,警告框会显示出来。不管变量someUndefinedVariable有没有定义,也永远不会对他求值,由于第一个操做数的值是false。而这也就意味着逻辑与操做的结果一定是false,根本用不着再对&&右侧的操做数求值了。

相关文章
相关标签/搜索