1. 程式人生 > 其它 >js隱式轉換

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>