區分js中的null,undefined,"",0和false


      console.log(typeof null);//object
        console.log(typeof undefined);//undefined
        console.log(typeof "");//string
        console.log(typeof 0);//number
        console.log(typeof false);//boolean

在程序語言定義的各種各樣的數據類型中,我們都會為其定義“空值”或“假值”,我們在標題里已經列出了js中的所有空值和假值,出來boolean本身就是true和false兩種情況外,其他數據類型的空值無非是undefined和defined兩類,如上代碼。

alert(0 == ''); //true
alert(0 == false); //true
alert(false == ''); //true
alert(null == undefined); //true

alert(!0); //true
alert(!false); //true
alert(!undefined); //true
alert(!null); //true
alert(!''); //true

alert(0 == undefined); //false
alert(0 == null); //false
alert(false == null); //false
alert(false == undefined);//false
alert('' == null); //false
alert('' == undefined); //false

這五個值的共同點是,在if語句中做判斷,都會執行false分支。當然從廣義上來看,是說明這些數值都是其對應數據類型上的無效值或空值。還有這五個值作!運算,結果全為:true。

    這幾個值中也有不同,其中undefined和null比較特殊,雖然null的類型是object,但是null不具有任何對象的特性,就是說我們並不能執行null.toString()、null.constructor等對象實例的默認調用。所以從這個意義上來說,null和undefined有最大的相似性。看看null == undefined的結果(true)也就更加能說明這點。不過相似歸相似,還是有區別的,就是和數字運算時,10 + null結果為:10;10 + undefined結果為:NaN。

    另外""、0和false雖然在if語句表現為"假值",可它們都是有意義數據,只是被作為了"空值"或"假值",因為:"".toString(),(0).toString()和false.toString()都是合法的可執行表達式。

其他的NAN也可以近似看做是一個空值或假值,因為任何類型的值與NAN做比較得到的都是false,包括NAN本身。

typeof的返回值類型是字符串


免責聲明!

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



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