前言
之前提起過,其實對於 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
這就是告訴我們,這個變數我們不曾宣告過,不曾宣告過的變數,我們就沒辦法使用。
就好比說我還沒有小孩,親戚來時,就對我說,你的兒子呢?
不曾擁有的都東西,就沒辦法出現。