js在进行==值比较时进行的隐性类型转换

xiaoxiao2021-02-28  87

我们知道在js中,==是进行的值比较,在比较运算之前,js会将不同类型的值转换为相同类型的值在进行比较,转换情况如下:

1:当比较对象中存在Boolean类型时,引用类型转换了Boolean均为true;数值0为false,其余均为true;空字符串为false,其余均为true。

2:当比较对象中存在Object类型时,js会尝试使用valueOf方法或toString()放将对象转换为描述对象的数值或字符串

3:数字与字符串比较时,字符串转换为数字,字符串转换数字失败时为NaN,出现情况4;

4:比较对象中存在NaN时均返回false;

5:null和undefined比较时不会进行类型转换但是他们相等,因为undefined派生于null,ECMAScript标准规定二者进行相等行测试时返回true;

举个例子:

[] == false  => [].valueOf() == false   => [].toString() == false  => "" == false  => true {} == false  => {}.valueOf() == false  => {}.toString() == false  => "[object object]" == false  => false

另:

===等号比较时其实就是不进行类型转换,即通常我们所理解的类型也会进行比较

注:

上述均是个人理解,如有错误还请指正

转载请注明原文地址: https://www.6miu.com/read-81185.html

最新回复(0)