null undefined undeclared 三者差異性

前言

之前提起過,其實對於 null 以及 undefined 是很容易搞混的,

而 undefined 以及 undeclared 也常常被拿來做比較。

這篇會藉由描述彼此的定義來做比較。

null

對於 null 而言,當一個變數指定為 null 時,他其實不是沒有定義,

純粹定義它是一個空值。就概念而言,我們可以當作是『沒有』東西。

舉個例子來說:

1
let phone = null;

對於電話號碼這個變數而言,現在電話號碼裡面是空的值。

undefined

對於 undefined 而言,我們則是定義了一個變數,但我們卻沒有指定它為任何一個值;

也是就是沒有對變數初始化,我們則稱為未定義。

舉個例子來說:

1
let phone;

我們則是定義了電話號碼這個變數,但卻沒賦予任何值給這個變數。

undeclared

對於 undeclared 則是我們從未宣告過,我們未曾定義一個變數,

連變數都還沒定義,就呼叫他出來,勢必會得到 undeclared 的錯誤訊息。

舉個例子來說:

我們想印出 email 這個變數。

1
console.log(email);

我們會得到 Uncaught ReferenceError: email is not defined

這就是告訴我們,這個變數我們不曾宣告過,不曾宣告過的變數,我們就沒辦法使用。

就好比說我還沒有小孩,親戚來時,就對我說,你的兒子呢?

不曾擁有的都東西,就沒辦法出現。


參考資料:

MDN - Null

MDN - Undefined

MDN - ReferenceError - undeclared variable