iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
1
自我挑戰組

JavaScript技術手冊閱讀筆記系列 第 8

第8天:undefined與null

undefined

不管是let或var,若宣告變數時沒有給值,則變數會被給予JavaScript中的特殊值--undefined,代表這個變數沒有值的意思。但是,我們說過JavaScript是在高層要求下緊急設計出來的腳本語言。所以在設計上或說在JavaScript的規格上,若試圖取得沒有宣告過的不存在的物件,JavaScript並不會回傳notfined,而是會回傳undefined。

若使用typeof來取得undefined的型態,會得到undefined的結果。
https://ithelp.ithome.com.tw/upload/images/20200923/20120420ihhZYB1Q56.png

我想可以理解JavaScript中宣告一個名為undefined的變數,其值為undefined型別。
任何未給值的變數,預設JavaScript會給其值為undefined。
https://ithelp.ithome.com.tw/upload/images/20200923/20120420oNrysiCTys.png

在ES5以前(古早瀏覽器中IE 6 7 8之類的?),undefined不是保留字,也不是常數,JavaScript並不會阻止我們宣告名字叫undefined的變數。
此圖是用IE模擬IE8的執行畫面
https://ithelp.ithome.com.tw/upload/images/20200923/20120420aYFt7FjXVp.png

直到2009年ES5發表才定義了undefined的是undefined,其值不可寫、不可列舉、不可給值。
下圖是IE11上的執行結果
https://ithelp.ithome.com.tw/upload/images/20200923/20120420IXtc2TVr3C.png

null

JavaScript中還有另一格特殊值null,代表沒有物件。要先宣告變數給值於物件,若此變數之後不須參考此物件,就可以給null值。使用typeof null會得到object這個型態。null是用來表示物件->沒有 的意思。
https://ithelp.ithome.com.tw/upload/images/20200923/20120420xrxfSYbxqs.png

通常我們看到null都是使用http連線查詢或請求時,若無結果會得到null。


上一篇
第7天:var與var的hoisting
下一篇
第9天:嚴格模式
系列文
JavaScript技術手冊閱讀筆記30

尚未有邦友留言

立即登入留言