逻辑或 逻辑与 NaN

来源:互联网 发布:python写界面 编辑:程序博客网 时间:2024/04/29 05:23

1.

逻辑或的一些规则:
1)如果第一个操作数是对象,则返回第一个操作数
2)如果第一个操作数的求值结果为false,则返回第二个操作数
3)如果两个操作数都是对象,则返回第一个操作数
4)如果两个操作数都是null,则返回null
5)如果两个操作数都是NaN,则返回NaN
6)如果两个操作数都是undefined,则返回undefined
逻辑或操作符是短路操作符。如果第一个操作数的求值结果为true,就不会对第二个操作数求值了。 

在JS中我们可以利用逻辑或来避免为变量赋值为null或undefined值

var myObject = preferredObject ||backupObject;

在这个例子中,变量myObject将被赋予等号后面两个值中的一个。变量preferredObject中包含优先赋给变量myObject的值,变量

backupObject负责preferredObject中不包含有效值的情况下提供后备值。如果preferredObject的值不是null,那么它的值将被赋给

myObject;如果是null,则将backupObject的值赋给myObject.ECMAScript程序的赋值语句经常会使用这种模式。

2.

逻辑与操作可以应用于任何类型的操作数,而不仅仅是布尔值。在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值;此时,它遵循下列规则:
1)如果第一个操作数是对象,则返回第二个操作数
2)如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象;
3)如果两个操作数都是对象,则返回第二个操作数;
4)如果有一个操作数是null,则返回null;
5)如果有一个操作数是undefined,则返回undefined。
逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。对于逻辑与操作而言,如果第一个操作数是false,则无论第二个操作数是什么值,结果都不再可能是true了。

3.NaN,

   即非数值(Not a Number)是一个特殊的数值,这个数值用来返回一个本来要返回数值的操作数未返回数值的情况。

  如:在其他编程语言中,任何数值除以0都会导致错误,从而停止代码执行。但在ECMAScript中,任何数值除以0会返回

NaN,因此不会影响其他代码的执行。

针对NaN的特点,ECMAScript定义了isNaN()函数。这个函数接受一个参数,该参数可以使任何类型,而函数会帮我们确定

这个参数是否"不是数值"。isNaN()在接收到一个值后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如

字符串"10"或Boolean值。而任何不能被转换为数值的值都会导致这个函数返回true。

alert(isNaN(NaN) );    //true

alert(isNaN(10));        //false (10是一个数值)

alert(isNaN("10"));      //false (可以被转换成数值10)

alert(isNaN("blue"));   //true (不能转换成数值)

alert(isNaN(ture));    //false(可以被转换为数值1)