JavaScript逻辑运算符
1 | 与 | && |
2 | 或 | || |
3 | 非 | ! |
首先,要先知道,
只有NULL、0、false、NaN、undefined、”“(空串), –转换成布尔型(boolean)–>是false
注:空串“”(里面啥也没有) – >false
与空格字符串” “(中间有个空格)是不一样的, – >true
eg:
!!" " + !!"" - !!false -- > 结果为1 //true + false - false
1.与 – > && (全真才为真,有一个假则为假)
var a = 表达式1 && 表达式2 && ... && 表达式n
先看表达式1转换成布尔型的结果,若为真,则继续看表达式2转换成布尔型的结果,若为真,看继续看表达式3……
在前n-1个表达式中,若出现第一个false,则返回false这个表达式的运算结果,
若前n-1个表达式都为true,则返回最后一个表达式的运算结果,不论true还是false。
eg:
var a = 1 && 1; -- >返回 1
var a = 1 && false; -- >false
var a = 0 && 1; -- >0
var a = 1 && 0 && 2; -- >0
var a = 1 + 1 && 1 - 1; -- >0 //+、-的优先级比&&高
2.或 – > || (有一个真则为真,全假则为假) ,兼容的时候可用
var a = 表达式1 && 表达式2 && ... && 表达式n
和 与逻辑运算符 相反
先看表达式1转换成布尔型的结果,若为真,则返回表达式1的运算结果,若为假,则继续看表达式2转换成布尔型的结果,若为真,则返回表达式2的结果,若为假,则看继续看表达式3……
在前n-1个表达式中,若出现第一个true,则返回true这个表达式的运算结果,
若前n-1个表达式都为false,则返回最后一个表达式的运算结果,不论true还是false。
|| 的优先级比 = 高
eg:var a = 1 || false; -- > 1
var a = 0 || false || 2; -- > 2
3.非 – > !
记住是转换成布尔值再取反,
eg:
var a = ! 123; -- > false //123 -- > true,!true -- >false