最近在自行研究JavaScript以及相關的知識,因爲沒有在網上能找到很是細緻的相關知識,因此購買了JavaScript權威指南一書(第六版)。不得不說,人家淘寶團隊真是厲害,厚厚一大本,翻譯的很是不錯,更好的是內容很是詳細。值得有經驗的開發人員觀看。對於這個書的讚美就不說辣麼多了,回到正題。前端
在以前的JavaScript開發中,常常見到的一個關鍵字 null 我想程序員們都會對它絕對眼熟,無論是數據庫仍是前端後臺, null 絕對是一個很是常見的關鍵字。程序員
null是JavaScript語言的關鍵字,他表示的是一個特殊值,經常用來描述 「空值」 。對null執行 tyeof 預算,結果返回字符串 「object」 ,也就是說,能夠將null認爲是一個特殊的對象值,含義是 「非對象」 。數據庫
但實際上,一般認爲null 是它 自有類型的惟一一個 成員 。 他能夠表示數字、字符串、和對象是「無值」的。數組
JavaScript 還有第二個值來表示 「空值」 ---undefined 用未定義的值表示 更深層次的「空值」 。它是變量的一種取值,表示變量沒有初始化,若是要查詢對象屬性或數組元素的值時返回 unfinished。引用沒有提供實參的函數形參的值也只會獲得 undefined 。 函數
undefined是預約義的全局變量(它和null不同,他不是關鍵字),它的值就是「未定義」 。在ECMScripgt 3中,undefined是可讀/寫的變量能夠給它賦任意值。 這個錯誤在ECMScript 5中進行了修正,在這個版本中的undefined只是可讀的,若是使用typeof 運算符獲得 undefined 的類型,則返回「undefined」, 代表這個值是這個類型的惟一成員。spa
儘管 null 和 undefined 是不一樣的,但它們都表示「值的空缺」 ,二者每每能夠互換,判斷相等的運算符 「==」 認爲二者是相等的 (要使用嚴格的相等運算符 「==」 來區分它們)。 在但願值是 布爾類型 的地方它們的值都是假值。 和false 相相似。 null和undefined 都不包含任何實行和方法 。 實際上,使用「.」和「[]」來存取這兩個值得成員方法都會產生一個類型錯誤。翻譯
你或許認爲 undefined 是表示系統級的、出乎意料的或相似錯誤的值的空缺, 而null是表示程序級的、正常的或在乎料之中的值的空缺。 若是你想將它們賦值給變量或者屬性,或將它們做爲參數傳入函數,最佳選擇是使用null。對象