JavaScript中null和undefined的區別

摘自《JavaScrip 權威指南t》(第六版):

相同點:

1. 兩者都是假值,即轉換爲布爾值時均被轉換爲false;

2. 判斷相等運算符“==”認爲兩者是相等的(要使用嚴格相等運算符“===”來區分他們)

3. 兩者都屬於特殊的類型,且是各自類型的唯一成員。

不同點:

1. null是關鍵字,undefined是預定義的只讀全局變量,不是關鍵字;

2.  typeof null 得到字符串“object”, typeof undefined 得到字符串“undefined”;

3. null可以被認爲是一種特殊的對象值, undefined是變量的一種取值;

4. null可以表示數字、字符串和對象是“無值”的, undefined的值就是“未定義”。


出現undefined的場合:

1. 變量已聲明,但還沒有初始化;

2. 要查詢的對象屬性或數組元素不存在;

3. 函數沒有返回任何值 ,則返回undefined;

4. 引用沒有提供實參的函數形參的值也會得到undefined。


如果你想將null或undefined賦值給變量或屬性,或將它們作爲參數傳入函數,最佳選擇是使用null。

if( o !== null )與if( o )是有區別的,前者顯式地檢測o是不是非null,只有當o不是null時纔會執行if後的代碼,後者沒有這麼嚴格:只有o不是false或者任何假值(比如null或者undefined或者“”或者0或者NAN)時它纔會執行這個if。   (PS:如果需要將null與0或者“”區分開,則需要使用一個顯式的比較。)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章