Javascript中undefined和null的差異

Harry Xie
Apr 11, 2019

--

在 javascript 中,undefined 代表的是未定義,比如變數無賦予值的話該變數預設就會是 undefined。null 的意義是空值,是讓開發者用來宣告變數沒有值。此外它們還有幾點的不同,整理如下:

undefined:

  1. typeof undefined會回傳undefined
  2. 若變數沒有提供初始值,則預設為undefined值
  3. 當要取用一個物件的屬性或陣列的元素時,若該屬性/元素不存在,回傳undefined
  4. 若原本一個函數需要傳入參數,但是調用函數時卻沒有傳入參數,則回傳值將會是undefined
  5. 使用void運算符時,後面的表達式不論如何皆回傳undefined
實際操作結果

null:

  1. typeof null會回傳object
  2. 在做DOM元素操作時,若要獲取的DOM元素不存在,則會回傳null
  3. null是用來給開發者來宣告”空值”的
操作結果
***補充***:文章當中undefined和null的第一點使用typeof只能區分原始型別( numberstringundefinedbooleanobject)這些,若是使用typeof去分辨  nullarrayobject,都會回傳object,而typeof判斷函式則是回傳function,因此可以使用Object.prototype.toString.call()方法去細分它們
運行結果

那麼它們有什麼相似的地方呢?

undefined和null相似處:
1. 都没有屬性和方法,也不能額外添加屬性方法
2. 皆為Falsy Value(Boolean判斷時為false)
3. 皆為原始型別(Primitive Type)

最後還要注意一點:

null == undefined 回傳true
null === undefined 回傳false

--

--

Harry Xie

這輩子做過最不後悔的選擇就是成為軟體工程師。更多關於我 : https://linktr.ee/harry.xie