比较运算符概述
JavaScript 语言中的比较运算符是进行比较两个操作数运算,并返回一个 boolean 类型的值。其操作数可以是数字值、字符串或对象等。一般情况下,如果两个操作数不是同一个类型的值的话,JavaScript 语言会转换其中一个操作数的类型,再进行比较运算。
JavaScript 语言提供了如下表所示的比较运算符:
值得注意的是:
字符串使用比较运算符进行运算时,是基于标准字典的 Unicode 值来进行比较的。
Infinity 值比任何值都大,-Infinity 值比任何值都小。
等于与不等于运算符
等于运算符(==)与不等于运算符(!=)比较的都是其操作数的值,而不比较类型。换句话讲,只要是值是相等的,比较的结果为 true。如下示例代码所示:
console.log(2 == '2')//true
如上图所示,第一个操作数是数字值,第二个操作数是字符串,但比较运算之后的结果为 true。这里实际上,JavaScript 语言先将其数字值转换为字符串或是将字符串转换为数字值后,再进行比较运算。
等于运算符(==)和赋值运算符(=)不要混淆,等于运算符是两个 =,而赋值运算符则是一个 =。再有就是,NaN 与任何值都不相等(包括自身),如下示例代码所示:
console.log(NaN == NaN)//false
console.log(NaN != NaN)//true
还有值得注意的是,undefined 和 null 值的比较,如下示例代码所示:
console.log(undefined == undefined)
console.log(null == null)
console.log(undefined == null)
全等与不全等运算符
比较运算符中除了等于运算符与不等于运算符之外,还提供了全等与不全等运算符。其区别在于全等与不全等运算符不仅比较值是否相等,还比较类型是否相同。
例如上述等于与不等于运算符的第一个示例代码,如果改为全等运算符的话,则结果会有所不同:
console.log(2 === '2')//false
如上图所示,需要注意的是,使用全等运算符进行比较运算时,JavaScript 语言是不会先进行类型转换的。
再有,不全等运算符指的是值或类型不同的话,运算结果则返回 true。也就是说,只要两个操作数的值或者类型其中一个不同,那么不全等运算符运算结果就为 true。如下示例代码所示:
console.log(2 !== '2') //true
console.log(2 !== 3) //true
console.log(2 !== 2) //false
如上图所示,第一个表达式是值相等但类型不同,第二个表达式是类型相同但值不等,第三个表达式是值和类型都相同。所以只有第三个表达式的结果为 false。
isNaN() 函数
由于 NaN 与任何一个值都不同相等,包括自身。所以,我们是无法使用比较运算符来进行 NaN 和其他值之间的比较运算的。
JavaScript 语言提供了 isNaN() 函数专门用来判断某个变量的值是否为 NaN。如下示例代码所示:
console.log(isNaN(Number('这是一个测试内容.'))) //true
这里需要注意的是,当返回结果为 true 时,表示当前变量的值为 NaN(不是一个数字值)。请不要混淆!