等值检测
等值检测的目的在于判断两个变量是否相同或相等。我们说相同与不相同,是指运算符“===”和“!==”的运算效果;说相等与不相等,是指运算符“==”和“!=”的运算效果。
我们可以用个表格来表示:
| 名称 | 运算符 | 说明 |
|---|---|---|
| 相等 | == | 比较两个表达式,看是否相等 |
| 不等 | != | 比较两个表达式,看是否不相等 |
| 严格相等 | === | 比较两个表达式,看值是否相等并具有相同的数据类型 |
| 不严格相等 | !== | 比较两个表达式,看是否具有不相等的值或数据类型不同 |
等值检测中相等运算规则
| 类型 | 运算规则 |
|---|---|
| 两个值类型进行比较 | 转换成相同数据类型的值进行数据等值比较 |
| 值类型与引用类型比较 | 将引用类型的数据转换为值类型,再进行数据等值比较 |
| 两个引用类型比较 | 比较引用的地址 |
等值检测中相同运算规则
| 类型 | 运算规则 |
|---|---|
| 两个值类型进行比较 | 数据类型不同,则必然不相同 数据类型相同时,进行数值等值比较 |
| 值类型与引用类型比较 | 必然不相同 |
| 两个引用类型比较 | 比较引用的地址 |
序列检测
序列检测这个概念咋一听很拗口,换个说法其实就是比较大小。比较的运算符有四个:>、>=、<、<=,意义不用说大家都明白。
可以进行序列检测的数据类型有三种,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 |
本文探讨了JavaScript中的比较运算,重点关注等值检测和序列检测。在等值检测中,介绍了相等运算符(==)和全等运算符(===)的不同规则,通过示例展示了它们在比较字符串对象时的行为。在序列检测方面,文章也有所提及。
3504

被折叠的 条评论
为什么被折叠?



