目录

比较运算符
逻辑运算符

比较运算符

比较和逻辑运算符用于测试 true 或 false
在逻辑语句中用于判定变量或值是否相等

等于 Equal (==)

如果两边操作数相等(值比较)返回 true
先做类型转换(拆箱为数值)再作比较,规则如下:

比较值中包含 NaN (优先级别:1)

NaN 直接返回 false
'' NaN == NaN // false
'' 5 == NaN // false

比较值中包含 null 与 undefined (优先级别:2)

null 与 undefined 不会转换为任何值,但是 null 与 undefined 相等
'' null == undefined // true
'' null == 0 // false
'' undefined == 0 // false

比较值中包含以下类型转换 Number 类型(优先级别:3)

布尔值类型 true 转换 1 false 转换 0
'' true == 1 // true
'' true == 2 // false
'' '' [] == ![] // true !运算符优先计算出 false ,根据比较运算符 false 转换 0 ,[] 转换 0,因此 0 === 0
字符串类型转换数值
'' "5" == 5 // true

全等 Strict equal (===)

如果两边操作数相等(值比较)且类型相同(原始数据类型和引用类型地址)时返回 true
规则如下:
'' let a = 3;
'' let b = new Number(3);
'' let c = 3;
''
'' console.log(a == b); //true
'' console.log(a === b); //false
'' console.log(b === c); //false
== 触发自动类型转换(拆箱),因此 3 === 3

比较值中包含 NaN (优先级别:1)

NaN 直接返回 false
'' 5 === NaN // false


逻辑运算符

在逻辑运算中逻辑运算符常用于求布尔值(逻辑非!),操作值能转换为 true 就返回 false,否则返回 true
'' var n1 = !true; // !t returns false
'' var n2 = !false; // !f returns true
'' var n3 = !"Cat"; // !t returns false

逻辑与(&&)逻辑或(||)返回的是一个特定的操作值,当前值能否转换为 true,如果能返回运算后操作值本身
'' var a1 = true && true; // t && t returns true
'' var o1 = true || true; // t || t returns true
'' var a5 = "Cat" && "Dog"; // t && t returns Dog
'' var o5 = "Cat" || "Dog"; // t || t returns Cat
'' var a6 = false && "Cat"; // f && t returns false
'' var o6 = false || "Cat"; // f || t returns Cat