等值检测
等值检测的目的在于判断两个变量是否相同或相等。我们说相同与不相同,是指运算符“===”和“!==”的运算效果;说相等与不相等,是指运算符“==”和“!=”的运算效果。
我们可以用个表格来表示:
名称 | 运算符 | 说明 |
---|---|---|
相等 | == | 比较两个表达式,看是否相等 |
不等 | != | 比较两个表达式,看是否不相等 |
严格相等 | === | 比较两个表达式,看值是否相等并具有相同的数据类型 |
不严格相等 | !== | 比较两个表达式,看是否具有不相等的值或数据类型不同 |
等值检测中相等运算规则
类型 | 运算规则 |
---|---|
两个值类型进行比较 | 转换成相同数据类型的值进行数据等值比较 |
值类型与引用类型比较 | 将引用类型的数据转换为值类型,再进行数据等值比较 |
两个引用类型比较 | 比较引用的地址 |
等值检测中相同运算规则
类型 | 运算规则 |
---|---|
两个值类型进行比较 | 数据类型不同,则必然不相同 数据类型相同时,进行数值等值比较 |
值类型与引用类型比较 | 必然不相同 |
两个引用类型比较 | 比较引用的地址 |
序列检测
序列检测这个概念咋一听很拗口,换个说法其实就是比较大小。比较的运算符有四个:>、>=、<、<=,意义不用说大家都明白。
可以进行序列检测的数据类型有三种,boolean、string和number。它们的序列值如下表所示:
可比较序列的类型 | 序列值 |
---|---|
boolean | 0~1 |
string | 0~255(*注1) |
number | NEGATIVE_INFINITY~POSITIVE_INFINITY(*注2) |
*注2:表示负无穷到正无穷,实际上是有界限的,只不过这个界限达到了10^308级别(可以通过Number.MAX_VALUE查看),我们一般认为达不到。值NaN没有序列值,任何值(包括NaN本身)与NaN进行序列检测都将得到false
序列检测的运算规则如下表:
类型 | 运算规则 |
---|---|
两个值类型进行比较 | 直接比较数据在序列中的大小 |
值类型与引用类型比较 | 将引用类型的数据转换为值类型数据,再比较数据在序列中的大小 |
两个引用类型比较 | 无意义,总是返回false |