您的位置:首页 > Web前端 > JavaScript

JavaScript比较运算

2016-02-18 17:08 471 查看

等值检测

等值检测的目的在于判断两个变量是否相同或相等。我们说相同与不相同,是指运算符“===”和“!==”的运算效果;说相等与不相等,是指运算符“==”和“!=”的运算效果。
我们可以用个表格来表示:

比较运算中的等值检测

名称运算符说明
相等==比较两个表达式,看是否相等
不等!=比较两个表达式,看是否不相等
严格相等===比较两个表达式,看值是否相等并具有相同的数据类型
不严格相等!==比较两个表达式,看是否具有不相等的值或数据类型不同

等值检测中相等运算规则

等值检测中的相等运算规则

类型运算规则
两个值类型进行比较转换成相同数据类型的值进行数据等值比较
值类型与引用类型比较将引用类型的数据转换为值类型,再进行数据等值比较
两个引用类型比较比较引用的地址
对值类型和引用类型概念模糊的可以去看之前的JavaScript变量一文。

等值检测中相同运算规则

等值检测中相同运算规则

类型运算规则
两个值类型进行比较数据类型不同,则必然不相同

数据类型相同时,进行数值等值比较
值类型与引用类型比较必然不相同
两个引用类型比较比较引用的地址
我们可以看到,两个引用类型比较,相同和相等并没有什么区别。我们看个例子:

[javascript] view
plain copy







var str1 = new String("str");

var str2 = new String("str");



console.log(str1 == str2); // false

console.log(str1 === str2); // false

序列检测

序列检测这个概念咋一听很拗口,换个说法其实就是比较大小。比较的运算符有四个:>、>=、<、<=,意义不用说大家都明白。
可以进行序列检测的数据类型有三种,boolean、string和number。它们的序列值如下表所示:

可比较序列的类型序列值
boolean0~1
string0~255(*注1)
numberNEGATIVE_INFINITY~POSITIVE_INFINITY(*注2)
*注1:在一般语言中,字符(char)这种数据类型是按ASCII码排序的。JavaScript中不存在字符类型,但字符串中的每一个字符,都将作为单一字符参与序列检测。
*注2:表示负无穷到正无穷,实际上是有界限的,只不过这个界限达到了10^308级别(可以通过Number.MAX_VALUE查看),我们一般认为达不到。值NaN没有序列值,任何值(包括NaN本身)与NaN进行序列检测都将得到false
序列检测的运算规则如下表:

序列检测的运算规则

类型运算规则
两个值类型进行比较直接比较数据在序列中的大小
值类型与引用类型比较将引用类型的数据转换为值类型数据,再比较数据在序列中的大小
两个引用类型比较无意义,总是返回false
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: