美文网首页
js在不同类型的值比较时的隐性类型转换

js在不同类型的值比较时的隐性类型转换

作者: 乖乖果效36 | 来源:发表于2018-09-26 17:43 被阅读15次

    我们知道在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
    

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


    本文来自 常驻客 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/local_people/article/details/71358194?utm_source=copy

    相关文章

      网友评论

          本文标题:js在不同类型的值比较时的隐性类型转换

          本文链接:https://www.haomeiwen.com/subject/exjjoftx.html