2.5.3布尔操作符

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

2.5.3.1 逻辑非

         逻辑非操作符由一个叹号(!)表示,可以应用于ECMAScript中的任何值。无论这个值是什么数据类型,这个操作符都会返回一个布尔值。逻辑非操作符首先会将它的操作数转换为一个布尔值,然后在对其求反。逻辑非操作符遵循下列规则:

1.如果操作数是一个对象,返回false;

2.如果操作数是一个空字符串,返回true;

3.如果操作数是一个非空字符串,返回false;

4.如果操作数是数值0,返回true;

5.如果操作数是任意非0数值,返回false;

6.如果操作数是null,返回true;

7.如果操作数是NaN,返回true;

8.如果操作数是undefined,返回true;

下面例子展示应用上述规则的结果: 


alert(!false);          // true
alert(!"blue"); // false
alert(!0); // true
alert(!NaN); // true
alert(!""); // true
aler t(!12345); // false

       逻辑非操作符可用于将一个值转换为与其对应的布尔值。而同时使用两个逻辑非操作符,实际上就会模拟Boolean()转型函数的行为。

 

2.5.3.2 逻辑与(&&)

         逻辑与操作符由两个和号(&&)表示,有两个操作数,例如:varresult=true&&false;

         逻辑与的真值表如下:

         第 2 章 基本概念(布尔操作)------------(6)_JavaScript非操作

         逻辑与操作可以应用于任何类型的操作数,而不仅仅是布尔值。在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值;它遵循下列规则:

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

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

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

(4)  如果一个操作数是null,则返回null;

(5)  如果有一个操作数是NaN,则返回NaN;

(6)  如果有一个操作数是undefined,则返回undefined。

         逻辑与操作属于断路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。对于逻辑与操作,如果第一个操作数是false,则第二个操作数是什么值,结果都不在可能是true。PS:不能在逻辑与操作中使用未定义的值。

2.5.3.3 逻辑或(||)

         逻辑或操作符由两个竖线符号(||)表示,有两个操作数。例如:varresult=true || false。

         逻辑或的真值表如下:        

         第 2 章 基本概念(布尔操作)------------(6)_操作数_02

         如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值,它遵循下列规则:

(1) 如果第一个操作数是对象,则返回第一个操作数;

(2) 如果第一个操作数的求值结果为false,则返回第二个操作数;

(3) 如果两个操作数都是对象,则返回第一个操作数;

(4) 如果两个操作数都是null,则返回null;

(5) 如果两个操作数都是NaN,则返回NaN;

(6) 如果两个操作数都是undefined,则返回undefined。

         逻辑或操作符也是短路操作符。如果第一个操作数的求值结果位true,就不会对第二个操作数求值。