"" null undefined NaN 0 特殊比較是true還是false


  在javascript的世界里,無論是函數,還是數組,還是對象,亦或是字符串,數字,布爾類型,在這些數據類型中,總有這么幾個特立獨行,然后造成一些可有可無的討厭bug。

  而這些討厭bug出現的原因就是由於比較時產生的錯誤,而且最不易查出錯誤。

  在這里我們整理了這幾個特殊數據類型的比較。直接上代碼。

  上代碼前,普及一個知識:

    ==內容比較,數據類型不比較。

    ===內容比較,數據類型也比較。

上代碼:

==比較代碼:

//        ""    null  undefined NaN 0
        console.log("\"\"==\"\":");
        console.log(""=="");  //false
        console.log("\"\"==null:");
        console.log(""==null);//false
        console.log("\"\"==undefined:");
        console.log(""==undefined);//false
        console.log("\"\"==NaN:");
        console.log(""==NaN);//false
        console.log("\"\"==Number.NaN:");
        console.log(""==Number.NaN);//false
        console.log("\"\"==0:");
        console.log(" "==0);//true

        console.log("null==\"\":");
        console.log(null=="");
        console.log("null==null:");
        console.log(null==null);
        console.log("null==undefined:");
        console.log(null==undefined);
        console.log("null==NaN:");
        console.log(null==NaN);
        console.log("null==Number.NaN:");
        console.log(null==Number.NaN);
        console.log("null==0:");
        console.log(null==0);

        console.log("undefined==\"\":");
        console.log(undefined=="");
        console.log("undefined==null:");
        console.log(undefined==null);
        console.log("undefined==undefined:");
        console.log(undefined==undefined);
        console.log("undefined==NaN:");
        console.log(undefined==NaN);
        console.log("undefined==Number.NaN:");
        console.log(undefined==Number.NaN);
        console.log("undefined==0:");
        console.log(undefined==0);

        console.log("NaN==\"\":");
        console.log(NaN=="");
        console.log("NaN==null:");
        console.log(NaN==null);
        console.log("NaN==undefined:");
        console.log(NaN==undefined);
        console.log("NaN==NaN:");
        console.log(NaN==NaN);
        console.log("NaN==Number.NaN:");
        console.log(NaN==Number.NaN);
        console.log("NaN==0:");
        console.log(NaN==0);

        console.log("0==\"\":");
        console.log(0=="");
        console.log("0==null:");
        console.log(0==null);
        console.log("0==undefined:");
        console.log(0==undefined);
        console.log("0==NaN:");
        console.log(0==NaN)
        console.log("0==Number.NaN:");
        console.log(0==Number.NaN);
        console.log("0==0:");
        console.log(0==0);

==比較結果:

    

===比較代碼:

//   ==內容比較,數據類型不比較。
        //  ===內容比較,數據類型也比較。
        //        ""    null  undefined NaN 0
        console.log("\"\"===\"\":");
        console.log(""==="");  //false
        console.log("\"\"===null:");
        console.log(""===null);//false
        console.log("\"\"===undefined:");
        console.log(""===undefined);//false
        console.log("\"\"===NaN:");
        console.log(""===NaN);//false
        console.log("\"\"===Number.NaN:");
        console.log(""===Number.NaN);//false
        console.log("\"\"===0:");
        console.log(" "===0);//true

        console.log("null===\"\":");
        console.log(null==="");
        console.log("null===null:");
        console.log(null===null);
        console.log("null===undefined:");
        console.log(null===undefined);
        console.log("null===NaN:");
        console.log(null===NaN);
        console.log("null===Number.NaN:");
        console.log(null===Number.NaN);
        console.log("null===0:");
        console.log(null===0);

        console.log("undefined===\"\":");
        console.log(undefined==="");
        console.log("undefined===null:");
        console.log(undefined===null);
        console.log("undefined===undefined:");
        console.log(undefined===undefined);
        console.log("undefined===NaN:");
        console.log(undefined===NaN);
        console.log("undefined===Number.NaN:");
        console.log(undefined===Number.NaN);
        console.log("undefined===0:");
        console.log(undefined===0);

        console.log("NaN===\"\":");
        console.log(NaN==="");
        console.log("NaN===null:");
        console.log(NaN===null);
        console.log("NaN===undefined:");
        console.log(NaN===undefined);
        console.log("NaN===NaN:");
        console.log(NaN===NaN);
        console.log("NaN===Number.NaN:");
        console.log(NaN===Number.NaN);
        console.log("NaN===0:");
        console.log(NaN===0);

        console.log("0===\"\":");
        console.log(0==="");
        console.log("0===null:");
        console.log(0===null);
        console.log("0===undefined:");
        console.log(0===undefined);
        console.log("0===NaN:");
        console.log(0===NaN)
        console.log("0===Number.NaN:");
        console.log(0===Number.NaN);
        console.log("0===0:");
        console.log(0===0);

===比較結果:

     

 

typeof()和isNaN()代碼:

     console.log(typeof "");
        console.log(typeof null);
        console.log(typeof undefined);
        console.log(typeof NaN);
        console.log(typeof 0);
        //        ""    null  undefined NaN 0
        console.log("isNaN(\"\")");
        console.log(isNaN(""));
        console.log("isNaN(null)");
        console.log(isNaN(null));
        console.log("isNaN(undefined)");
        console.log(isNaN(undefined));
        console.log("isNaN(NaN)");
        console.log(isNaN(NaN));
        console.log("isNaN(0)");
        console.log(isNaN(0));

typeof()和isNaN()結果:

  

 

結論:

雙等於  0==""為true ,  null==undefined為true  其他除了NaN之外等於自己都是true,剩下來的都是false

 

三等於      除了NaN之外等於自己都是true,剩下來的都是false

 

""是string類型

null是Object類型

undefined是undefined類型

0和NaN都是number類型

 

 

 

以上純手打,若有不足之處,還望指出,在下感激不盡。

 

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM