1.undefined
undefined的產生為初始化的時候,如果沒有進行賦值,她是一個預定義的全局變量,例如:
在你沒有進行對某個變量進行賦值的時候,他會被賦為undefined。
2.null
null是人為進行賦值的。比如某個函數或者數組等等復雜類型,你如果想要進行一個舍棄,可以把它賦值為null。此時游覽器會進行一個回收。
其中typeof(null)會是一個object。最初這么設計的原因為:通常用作一個空引用一個空對象的預期,就像一個占位符。typeof的這種行為已經被確認為一個錯誤,雖然提出了修正,出於后兼容的目的,這一點已經保持不變。
這也是上面為什么說可以把一個准備舍棄的復雜類型賦值為null的原因。
3.null和undefined的相同地方和區別
他們兩個是基本相等的,但是不全等。
沒有值代表的布爾值是false,這意味着他們在條件上下文中會被被計算為false,如if語句。使用相等操作符(= =)比較這兩個值和其他false值, 但是其實null並不等於false,undefined同樣也是。