在 javascript 中,undefined 代表的是未定義,比如變數無賦予值的話該變數預設就會是 undefined。null 的意義是空值,是讓開發者用來宣告變數沒有值。此外它們還有幾點的不同,整理如下:
undefined:
- typeof undefined會回傳undefined
- 若變數沒有提供初始值,則預設為undefined值
- 當要取用一個物件的屬性或陣列的元素時,若該屬性/元素不存在,回傳undefined
- 若原本一個函數需要傳入參數,但是調用函數時卻沒有傳入參數,則回傳值將會是undefined
- 使用void運算符時,後面的表達式不論如何皆回傳undefined
null:
- typeof null會回傳object
- 在做DOM元素操作時,若要獲取的DOM元素不存在,則會回傳null
- null是用來給開發者來宣告”空值”的
***補充***:文章當中undefined和null的第一點使用typeof只能區分原始型別( number、string、undefined、boolean、object)這些,若是使用typeof去分辨 null、array、object,都會回傳object,而typeof判斷函式則是回傳function,因此可以使用Object.prototype.toString.call()方法去細分它們
那麼它們有什麼相似的地方呢?
undefined和null相似處:
1. 都没有屬性和方法,也不能額外添加屬性方法
2. 皆為Falsy Value(Boolean判斷時為false)
3. 皆為原始型別(Primitive Type)
最後還要注意一點:
null == undefined 回傳true
null === undefined 回傳false