JavaScript-比较运算符
一、概述
>
大于运算符<
小于运算符<=
小于或者等于运算符>=
大于或者等于运算符==
相等运算符===
严格相等运算符!=
不相等运算符!==
严格不相等运算符
二、非相等运算符:字符串的比较
先从第一个字符开始比较,比较依据(Unicode的大小)
"cat" > "dog"; // false
三、非相等运算符:非字符串的比较
如果两个运算子之中,至少有一个不是字符串,需要分成以下两种情况
-
原始类型值:两个都是原始类型的值,则先转为数值再比较
5 > '4' // true // 等同于 5 > Number('4') // 即 5 > 4 true > false // true // 等同于 Number(true) > Number(false) // 即 1 > 0 2 > true // true // 等同于 2 > Number(true) // 即 2 > 1
-
对象:如果运算子是对象,会转为原始类型的值,再进行比较。
四、严格相等运算符
==
:比较两个值是否相等===
: 比较两个值是否相等。通过是同一类型数据,就是True,如果不是返回false
NAN == NAN; // false
[] === []; // false
{} === {}; // false
-----------------------
null === null; // true
undefined === undefined; // true
五、严格不相等运算符
它的算法就是先要求严格相等运算符的结果,然后返回相反值
1 !== "1"; // true
六、相等运算符
-
同类型的数据做比较的话,就不需要进行转换
-
原始类型值,转换为数值类型再进行比较
1 == true // true // 等同于 1 === Number(true) 0 == false // true // 等同于 0 === Number(false) 2 == true // false // 等同于 2 === Number(true) 2 == false // false // 等同于 2 === Number(false) 'true' == true // false // 等同于 Number('true') === Number(true) // 等同于 NaN === 1 '' == 0 // true // 等同于 Number('') === 0 // 等同于 0 === 0 '' == false // true // 等同于 Number('') === Number(false) // 等同于 0 === 0 '1' == true // true // 等同于 Number('1') === Number(true) // 等同于 1 === 1 '\n 123 \t' == 123 // true // 因为字符串转为数字时,省略前置和后置的空格
-
对象与原始类型值比较:将对象转换为原始类型值再比较
// 对象与数值比较时,对象转为数值 [1] == 1 // true // 等同于 Number([1]) == 1 // 对象与字符串比较时,对象转为字符串 [1] == '1' // true // 等同于 String([1]) == '1' [1, 2] == '1,2' // true // 等同于 String([1, 2]) == '1,2' // 对象与布尔值比较时,两边都转为数值 [1] == true // true // 等同于 Number([1]) == Number(true) [2] == true // false // 等同于 Number([2]) == Number(true)
-
null,undefied
null == undefied; // true
七、不相等运算符
它的算法就是先求相等运算符的结果,再取相反值。