PaDndaOBV

23朵毒蘑菇

js中的等于和不等于,全等和不全等之间的区别,以及类型转换的方式。

原文章迁移

js|JavaScript

2022-06-29 17:12:18 已有版本 1 个 show:0.58kTYPE: blog

一篇文字

在写js的时候不可避免的会使用等于操作符来进行判断操作,而等于操作符在比对时会将符号两端的数据进行类型转换,有些转换规则是必须要知道的。而全等操作符是不会进行类型转换的。

等于和不等于

等于使用 (==) 表示,如果操作数相等则返回true,不等号用 (!=) 表示,与等于相反。这两个操作符都会先进行类型转换(强制类型转换)再确定操作符是否相等。转换规则如下:

1:如果任一操作数是布尔值,则将其转换为数值再比较是否相等。false转换为0,true转换为1。

2:如果一个操作数是字符串,另一个操作数是数值,则尝试将字符串转换为数值,再比较是否相等。

3:如果一个操作数是对象,另一个不是,则调用对象的valueOf()方法取得其原始值,再根据前面的规则进行比较。

在进行比较时,这两个操作符会遵循如下规则。

1:null和undefined相等。

2:null和undefined不能转换为其他类型的值在进行比较。(特殊)

3:如果有任一操作符数是NaN,则相等操作符返回false。(即使两个操作数都是NaN,相等操作符也返回false,因为按照规则,NaN不等于NaN)

4:如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true。

一些特殊情况以及比较结果

null == undefined  //true
"NaN" == NaN  //false
5 == NaN  //false
NaN == NaN  //false
NaN != NaN  //true
false == 0  //true
true == 1  //true
true == 2  //false
undefined == 0  //false
null == 0  //false
"5" == 5  //true

全等和不全等

全等用 (===) ,不全等用 (!==) ,返回值与用法与相等不相等操作符类似,只不过它们在比较时不转换操作数。

比较全等时只要两个操作数类型不一致都返回 false。

摘抄自权威书籍,防止记不住而且百度的杂七杂八的不准确。