0%

JavaScript 核心 (7) - 執行環境與作用域 - undefined VS not defined

undefined

在宣告變數之前呼叫變數,則會是 undefined

1
2
console.log(a);    /* undefined */
var a = 'Cloud'

undefined 注意事項

在宣告變數時請不要使用 undefined或是給 undefined 當作值賦予變數,即使 JS 允許也一樣,這會導致在 debug 的困擾。

1
2
3
var a = undefined;
var undefined = '1';
undefined /* undefined */

若想賦予變數初始空值,則可以使用 null 來代替。
<註>null'' 是不同的

1
2
3
typeof('');   /* return string */

typeof(null); /* return object */

而 null 為什麼會是 object 呢? 這是 JS 在一開始設計時產生的 Bug,但因為運行過久,導致現在若修正的話,會影響到全世界的網站,所以就一直維持這個 Bug。

not defined

根本連宣告變數都沒有就呼叫變數,則會是 not defined
意即變數或函式未定義

1
console.log(a);    /* a is not defined */

參考資料

六角學院 - JavaScript 核心篇
JavaScript 核心觀念(7)-執行環境與作用域-not defined VS undefined