null 和 undefined 的區別

ytweb發表於2023-05-09

一、概念

undefined 表示未定義,就是應該有值但是還沒有賦值,連null的值都沒有賦予


null 代表空值,空引用。


二、區別

1.  null 和 undefined 雖然值的結果是相等的,但是其所代表的語義是完全不一樣的(==是相等的)。


  undefined 代表了某個變數完全不存在,在記憶體中完全能不存在這個識別符號所指向的地址;


  null 代表了記憶體中是存在這個變數的,只是我在某些情況下需要把這個變數原本的值給覆蓋了,將它設定為一個空。


2.  null 轉為數值是 0 ;  undefined 轉為數值是 NAN(not a number)。


3.  null 透過 typeof 判斷型別的時候結果的輸出是 object ; 而 undefined 的型別是 undefined 。


那麼為什麼 typeof null 是 object ?


null 和 undefined 都是js語言的基礎資料型別, 都是原始值型別,但是 typeof null 是 object ,是因為不同的物件在底層都表現為二進位制,在  JavaScript  中二進位制前三位都為 0 的話會被判斷為 object  型別,null 的二進位制全部都為 0 ,前三位自然也是 0 ,所以執行 typeof 值會返回 object 。


4.  null 是 js 語言的關鍵字,是不允許使用者用來作為識別符號宣告變數的,但是 undefined 可以,undefined 不是關鍵字。


在 node 環境中,我們宣告的 undefined 會將原本的 undefined 覆蓋的,但是在瀏覽器環境中不會,是因為瀏覽器中的 undefined 是直接被使用 Object.defineProperty 定義在了全域性物件 window 上,預設就已經被配置成為了:值不可修改並且不可以被重新進行配置。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29187948/viewspace-2950973/,如需轉載,請註明出處,否則將追究法律責任。

相關文章