js隐式转换

 <script>
        //个人感觉是两边都调用了Number
        console.log(true == 1); // 1==1 ---- true
        console.log(true == '1'); // 1==1 ----true
        console.log(1 == '2'); // 1==2 ---- false
        console.log('a' == 1); // NaN==1 ---- false
        console.log(true == 'true'); // 1==NaN ---- false
        console.log(true == 'false'); // 1==NaN ---- false
        console.log('----------------------------------------------------');
        //对象之间比较地址值
        console.log([] == []); //false
        console.log([] == {}); //false
        console.log([] === []); //false
        console.log({} === {}); //false
        console.log([] !== []); //true
        console.log({} !== {}); //true

        console.log('----------------------------------------------------');
        //如果一个操作数是对象,另一个操作数不是,则调用对象的toString()方法
        //下面的比较步骤:
        //           []==false
        //           [].toString()==false
        //           "" == false      
        console.log([] == ![]); //true
        //下面的比较步骤:
        //           {}==false
        //           {}.toString==false
        //           "[object Object]"==false
        //            NaN==false    
        console.log({} == !{}); //false

        console.log(0 == '0'); //true

        //下面的比较步骤:
        //      0==[].toString()
        //      0==""
        //      0==Number('') 
        //      0==0 
        console.log(0 == []); //true

        //下面的比较步骤:
        //         "0" == [].toString()
        //         "0" == ""
        console.log("0" == []); //false
    </script>
posted @ 2022-03-22 18:58  QTDD  阅读(57)  评论(0)    收藏  举报