以前一直误以为操作符逻辑与(&&)和逻辑或(||)的最终返回结果只有true或者false两种,今天在调试程序的时候才醒悟原来不是这样的。
首先这两个操作符都有两个操作数,都可以应用于任何类型的操作数,而不仅仅是布尔值。
那么哪些值会被当做假呢?
除false,null,undefined,空字符串" ",数字0,数字NaN这些会被当做假,其他所有值都被当做真(包括true,"false",以及所有的对象,可以使用Boolean来测试一个值到底被转换成了什么,例如Boolean('false') 返回的应该是true)
① 逻辑与(&&)遵循的规则
首先计算左边表达式的值,如果为false或者可以转换为false(值被当做假),那么返回左边表达式的值,否则将返回右边表达式的值作为&&的运算结果。
② 逻辑或(||)遵循的规则
首先计算左边表达式的值,如果不为false或者不可以转换为false(值为真),那么返回左边表达式的值,否则返回右边表达式的值作为||的运算结果