在使用逻辑运算符时,不论是任何数据类型前后的语句都会先自动转化为Boolean类型,然后再进行操作或运算,逻辑运算相较于位运算速度更快==
逻辑运算符中与、或分为长路和短路
**长路(即位运算):**按位与 &、按位或 |
**短路(即逻辑运算):**逻辑与&&、逻辑或||
长路和短路的区别:
长路将逻辑运算符两侧运算执行完后执行逻辑运算;
短路先执行逻辑运算符左侧部分,符合要求直接输出逻辑运算结果,不再执行右侧部分。
逻辑与==&&==(关于与的记忆:可以理解为先对才有机会向下进行匹配)
左侧true时执行右侧,右侧true则true,右侧false则false
左侧false则false,不再执行右侧,即短路
逻辑或==||==(关于或的记忆:可以理解为先错才有机会向下进行霍霍)
左侧false执行右侧,右侧true则true,右侧false则false
左侧true则true,不再执行右侧,即短路
逻辑非== !==
首先将操作数转换为布尔值,然后再对其进行取反
如果操作数是false、0、NaN、空字符串(“”)、null、undefined这六种,则返回true
如果操作数是对象、非空字符串、非0数值(包括Infinity)这三种,则返回false
使用==两个感叹号!!==可以将任意值转换为布尔值,相当于调用了转型函数Boolean(),可以得到变量真正的布尔值