关于javascript中的操作符&&和||的最终返回值

以前一直误以为操作符逻辑与(&&)和逻辑或(||)的最终返回结果只有true或者false两种,今天在调试程序的时候才醒悟原来不是这样的。

首先这两个操作符都有两个操作数,都可以应用于任何类型的操作数,而不仅仅是布尔值。

那么哪些值会被当做假呢?

  除false,null,undefined,空字符串" ",数字0,数字NaN这些会被当做假,其他所有值都被当做真(包括true,"false",以及所有的对象,可以使用Boolean来测试一个值到底被转换成了什么,例如Boolean('false') 返回的应该是true 

① 逻辑与(&&)遵循的规则

首先计算左边表达式的值,如果为false或者可以转换为false(值被当做假),那么返回左边表达式的值,否则将返回右边表达式的值作为&&的运算结果。

② 逻辑或(||)遵循的规则

首先计算左边表达式的值,如果不为false或者不可以转换为false(值为真),那么返回左边表达式的值,否则返回右边表达式的值作为||的运算结果

 
原文地址:https://www.cnblogs.com/yangfei/p/3112720.html