六角學院 JS 核心筆記 (七)【執行環境與作用域】- Not Defined VS Undefined
AdSense
前言
not defined
和 undefined
是 JavaScript 中很基礎卻也很重要的觀念。
not defined
當程式中該變數從來沒有被宣告過時,就會出現 Uncaught ReferenceError: 變數名稱 is not defined
錯誤。也就是當程式在執行階段進行 RHS 查找時,JavaScript 引擎在全部的詞彙環境 (Lexical Environment) 中都找不到該變數。
undefined
無論是當我自己宣告變數,但是還沒有賦予值時;或是程式將變數提升,讓程式進入執行階段前,就預先完成宣告,但是沒有賦予值時。程式都會自動賦予變數一個 undefined
的值。
注意:
- 千萬不要自己賦予變數
undefined
,因為我們無法得知這個undefined
是程式自動賦予的,還是我們後來賦予的。如果想要賦予變數一個空值,應該要使用null
。 - 也不要把它拿來當變數名稱使用。因為你會不知道出現的是變數名稱還是變數的值。
寫程式時,千萬不要造成自己的麻煩。
參考資料:
六角學院:JavaScript 核心篇 - 邁向達人之路