JavaScript中null和undefined的區別

var a = typeof null;
    var b = typeof undefined;
    console.log(a);//=>"object"
    console.log(b);//=>"undefined"

  

null是JavaScript語言中的關鍵字,它表示一個特殊值,經常使用來描述「空值」。對null執行typeof預算,結果返回字符串「object」,也就是說,能夠將null認爲是一個特殊的對象值,含義是「非對象」。但實際上,一般認爲null是它自有類型的惟一一個成員,它能夠表示數字、字符串和對象是「無值」的。大多數編程語言和JavaScript同樣含有null:你可能對null或nil很眼熟。javascript

JavaScript還有第二值來表示值的空缺。用未定義的值表示更深層次的「空值」。它是變量的一種取值,代表變量沒有初始化,若是要查詢對象屬性或數組元素的值時,返回undefined則說明這個屬性或元素不存在。若是函數沒有返回任何值,則返回undefined。引用沒有提供實參的函數形參也會獲得undefined。undefined是預約義的全局變量(它和null不同,它不是關鍵字),它的值就是「未定義」。在ECMAScript3中,undefined是可讀/寫的變量,能夠給它賦任意值。這個錯誤在ECMAScript5中作了修正,undefined在該版本中是隻讀的。若是使用typeof運算符獲得undefined的類型,則返回「undefined」,代表這個值是這個類型的惟一成員。java

儘管null和undefined是不一樣的,但它們都表示「值的空缺」,二者每每能夠互換。判斷相等運算符「==」認爲二者是相等的(要使用嚴格相等運算符「===」來區分它們)。在但願值是布爾類型的地方它們的值都是假值,和false相似。null和undefined都不包含任何屬性和方法。實際上,使用「.」和「[]」來存取這兩個值的成員或方法都會產生一個類型錯誤。編程

你或許認爲undefined是表示系統級的、出乎意料的火相似錯誤的值或空缺,而null是表示程序級的、正常的或在乎料之中的值的空缺。若是你想要將它們賦值給變量或屬性,或將它們做爲參數傳入函數,最佳的選擇是使用null。數組

參考資料:編程語言

《JavaScript權威指南》P44函數

相關文章
相關標籤/搜索