比较运算符
大小比较:> < >= <=
相等比较:==
相等!=
不相等===
严格相等!==
严格不相等
比较运算符的返回类型:boolean
算术运算符的优先级高于比较运算符
大小比较
细节
两个字符串比较大小, 比较的是字符串的字符编码。
如果一个不是字符串,并且两个都是原始类型,将它们都转换为数字进行比较
‘1’ -> 1
‘’ -> 0
‘ ‘ -> 0
‘ a’ -> NaN
‘3.14’ -> 3.14
NaN与任何数字比较,得到的结果都是false
Infinity比任何数字都大
-Infinity比任何数字都小
- 如果其中一个是对象,将对象转换为原始类型然后,按照规则1或规则2进行比较
目前,对象转换为原始类型后,是字符串 “[object Object]”
相等比较
== 和 != (相等比较 和 不相等比较)
==: 比较两个数据是否相等
!=: 比较两个数据是否不相等
细节
两端的类型相同,直接比较两个数据本身是否相同(两个对象比较的地址)
两端的类型不同
1). null 和 undefined, 它们之间相等, 和其他原始类型比较, 则不相等。
2). 其他原始类型,比较时先转换为数字,再进行比较
3). NaN与任何数字比较,都是false,包括自身
4). Infinity和-Infinity,只能和自身相等
5). 对象比较时,要先转换为原始类型后,再进行比较
由于相等和不相等比较,对于不同类型的数据比较违反直觉,因此,通常我们不适用这种比较方式,而是使用更加接近直觉的严格相等和严格不相等比较
=== 和 !== (严格相等 和 严格不相等)
=== : 两端的数据和类型必须相同
!== : 两端的数据或类型不相同
- 两端类型相同,规则和相等比较一致。
- 两端类型不同,为false。