你必须记住的Javascript知识:布尔操作符之——逻辑与

布尔操作符:

布尔操作符一共有3个:非(NOT)、与(AND)、或(OR)。

1.逻辑

逻辑操作符由2个和号 ( && ) 表示,有两个操作数,如下图所示:

第一个操作数 第二个操作数 结     果
true true true
true false false
false true false
false false false

如上,从这个逻辑与的真值表中我们可以总结一个规律,即判断逻辑与的两个操作符的真值时:

全真则真,有假则假!

逻辑与操作可以应用于任何类型的操作数,而不仅仅是布尔值。

在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值;此时,它遵守以下规则:

如果第一个操作数是对象,则返回第二个操作数

如果第二个操作数是对象,则只有在第一个操作数的求值结果为 true 的情况下,才会返回该对象

如果两个操作数都是对象,则返回第二个操作数

如果第一个操作数是 null ,则返回 null ;(字面量)

如果第一个操作数是 NaN,则返回 NaN ;(字面量)

如果第一个操作数 undefined ,则返回 undefined;(字面量)

那么,重点来了!请一定牢记下面2句话:

1、逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值;对于逻辑与操作而言,如果第一个操作数是 false ,则无论第二个操作数是什么值,结果都不再可能是 true 了!

2、不能在逻辑与操作中使用未定义的值!

我们来看个例子:

var found = true;
var result = (found && someUndefinedVariavle); //变量someUndefinedVariavle未声明,会发生错误
alert(result) // 这一行不会执行

如果你运行了这段代码,会在 Console 中打印出来:

Uncaught ReferenceError: someUndefinedVariavle is not defined at ...

很明显,这个错误是由变量 someUndefinedVariavle 未声明所导致的

我们接着看,如果我们稍稍改动一下:

var found = false;
var result = (found && someUndefinedVariavle); //逻辑短路 第一个操作数为 false
alert(result) // 会执行 false

这个例子中,因为变量 found (第一个操作数)的值为 false,因此,即便第二个操作数  someUndefinedVariavle 未声明,也不再重要了,所以,在实际应用中一定请牢记逻辑与的这2个特性!

                                  ————以上知识点来源于《JavaScript高级程序设计(第三版)》

你可能感兴趣的:(逻辑与,&&,布尔操作符,AND,JavaScript)