JavaScript undefined 與 null 的區別

紀錄一下 JavaScript undefined 與 null 的區別

JavaScript undefined 與 null 的區別
Photo by Kelly Sikkema / Unsplash

每當自己對工作覺得沒動力時,都會補充基礎知識充電一下,買個進階課程,學習其他技能等等。
紀錄 JavaScript undefined 與 null 的區別。

知識點整理

  • undefined 代表變數被宣告了,可是卻沒有賦值
  • null 代表的是沒有值,也就是「不存在」
  • 變數的預設值為 undefined
  • 如果得到 null 就代表是有被人為操作過的,JS 預設不會將值設定為 null
  • 在 JSON 資料格式當中,不能使用 undefined,如果要表示空值則必須使用 null
  • typeof undefined 變數會得到 undefined 字串
  • typeof null 變數會得到 object 字串
  • undefined 與 null 都會被視為 false
  • 如果調用未定義的變數會噴例外錯誤,undefined 則不會

範例

var foo
console.log(foo) // undefined
console.log(typeof foo) // undefined
var bar = null
console.log(bar) // null
console.log(typeof bar) // object

typeof null 應該是要為 null 的,可是當初設計成 object 就用到現在了
參考:https://2ality.com/2013/10/typeof-null.html

console.log(null == undefined) // true
console.log(null === undefined) // false

== 左右兩邊為 null 或是 undefined 則回傳 true
=== 左右兩邊為 null 或是 undefined 則回傳 false

參考:https://262.ecma-international.org/5.1/#sec-11.9.3
參考:https://262.ecma-international.org/5.1/#sec-11.9.6