在javascript中==和===的区别

JavaScript08

在javascript中==和===的区别,第1张

简单来说,==在比较的时候,会发生数据类型转换,而===不会发生类型转换,也就是说,对于===的话,会先判断是否是同一个类型,如果不是的话,直接返回false,而==的话呢,如果不是同一个类型,则会先根据一些规则,把他们转换成同种类型的,然后再进行比较。

对于==的话,究竟都是根据哪些规则来转换的呢?

如果相比较的两个操作数,其中一个是数字类型,另一个是字符串类型的话,那么字符串将会转换为数字,再进行比较

也就是说

"1111" == 1111   等价于    Number("1111") == 1111

如果操作数中,有布尔类型的,那么他将会转为数字类型

也就是说, true == 12    等价于   Number(true) == 12,所以结果为false

如果比较的两个操作数,一个是undefined另一种是null,则返回true

undefined == null    的值为true

对于两个操作数,如果其中一个是字符串或数字,另一个是对象的话,那么对象会转为原始值,然后再进行比较

那么对象怎么转换呢?

通常来说,再转换的时候,会先判断对象中是否有valueOf()函数,有的话,就执行这个,获取到原始值,如果通过valueOf()函数获取不到原始值,或者这个函数不存在的话,就调用toString()函数。

看下面这个例子

var obj = {

valueOf() {

return 3

}

}

console.log(obj == 3) // true

如果想了解更多关于==之间类型转换之间的小知识,可以参考小文章来获取更多内容:Javascript基础之-强制类型转换(三)

=是赋值运算符,==是关系运算符===是全等运算符

”==”是判断值是否相等,

”===”是判断值及类型是否完全相等。

”==”比较时会进行类型转换,“===”则不会

例如:

alert('55' == 55)      //true

alert('55' === 55)  //false