區分javascript中的undefined,null,””,0,false和NaN

來源:互聯網
上載者:User
其實標題裡面我已經列出了JavaScript中所有的"空值"和"假值",除了boolean值本身就是true和false這兩種情況外,其它資料類型的"空值"主要是undefined和defined這兩大類。這些空值的類型分別是:

 (typeof undefined) == 'undefined'
 (typeof null) == 'object'
 (typeof "") == 'string'
 (typeof 0) == 'number'
 (typeof false) == 'boolean'   (typeof NaN)=='number'

    這六個值的共同點是,在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()都是合法的可執行運算式。

    其實這6個值在上面所說的這些差異裡,並不太會給程流程式控制制帶來太大的問題,那麼要區分它們什麼呢?需要注意區分的是這些值在轉換為String時的差異是比較大的,它們到String的轉換關係是:

 String(undefined) -> "undefined"
 String(null) -> "null"
 String("") -> ""
 String(0) -> "0"
 String(false) -> "false"   String(NaN) -> 'NaN'

 

在script標籤裡面聲明language時候附帶上版本,從1.3以後未定義值都是null,之前的未定義值都是undefined,不同的版本結果不同,最新的都歸為null啦。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.