探討 undefined、not defined 兩者區別以及注意事項。
undefined
MDN:屬於 primitive value
之一、全域物件的 property
。
Tips
預設值
表示變數尚未宣告
或者是已經宣告了但尚未賦值
。特殊關鍵字
可以當作一個值去賦予不會噴錯,但千萬不要
這麼做。
1 | let b; |
下方會演示兩種 undefined 錯誤應用,並解析問題。
不建議賦值為 undefined
問題:造成無法看出此變數是否有被賦予值。
解法:
- 使用 null,更符合空值的意義。
- 宣告變數不帶值,預設就會賦予 undefined。
1 | // 不建議寫法 |
不建議變數名稱命名為 undefined
問題:javascript 會過,但無法正常運作。
解法:
- 直接不要用 undefined 命名
- 不要用 var 改用 let、const(ES6 中已修正此問題,因此無法使用 undefined 命名)
1 | // 不建議寫法 |
not defined
屬於 error,會噴錯誤訊息。(throw a ReferenceError exception)
Tip
- 常見的原因是使用了
尚未宣告
的變數或函式,所導致的 Error。
1 | console.log(c); // ReferenceError: c is not defined |
different
- undefined:宣告(declaration) 後
尚未賦予值
。 - not defined:
尚未被宣告
(declaration)。
1 | let b; |
conclusion
reference
延伸閱讀