六角學院 JS 核心筆記 (七)【執行環境與作用域】- Not Defined VS Undefined

前言

not definedundefined 是 JavaScript 中很基礎卻也很重要的觀念。

not defined

當程式中該變數從來沒有被宣告過時,就會出現 Uncaught ReferenceError: 變數名稱 is not defined 錯誤。也就是當程式在執行階段進行 RHS 查找時,JavaScript 引擎在全部的詞彙環境 (Lexical Environment) 中都找不到該變數。

undefined

無論是當我自己宣告變數,但是還沒有賦予值時;或是程式將變數提升,讓程式進入執行階段前,就預先完成宣告,但是沒有賦予值時程式都會自動賦予變數一個 undefined 的值。

注意

  1. 千萬不要自己賦予變數 undefined,因為我們無法得知這個 undefined 是程式自動賦予的,還是我們後來賦予的。如果想要賦予變數一個空值,應該要使用 null
  2. 也不要把它拿來當變數名稱使用。因為你會不知道出現的是變數名稱還是變數的值。

寫程式時,千萬不要造成自己的麻煩。

參考資料:
六角學院:JavaScript 核心篇 - 邁向達人之路