iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
1
自我挑戰組

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

第23天:特性與undefined

  • 分享至 

  • xImage
  •  

JavaScript的物件,本質上像似特性的集合體。例如:

let obj = {
    x: 123,
    y: 'abcd',
    z: undefined
    }

其中x跟y就是該物件的特性,有點像是字典或電話簿,有個名稱key對應到裡面的值value。

這裡要講的是我們使用obj.z得到undefined,和用obj.c得到undefined是兩件不一樣的事。
一個是obj.z對應的value是undefined,是特性對應的值不存在
一個是obj.c這個key是undefined,是特性不存在,obj裡面沒有c這個特性

https://ithelp.ithome.com.tw/upload/images/20201008/20120420c20zslOj9k.png

所以對一個物件的特性取值時,得到undefined的回應就有兩種意思,到底是上述中的哪一種呢?

可以使用 in 語法來確定是否有該特性。

'z' in obj

https://ithelp.ithome.com.tw/upload/images/20201008/20120420Za2US3X1Gx.png

最好的方式是避免特性的值是undefined,要刪除特性可以使用delete運算子

delete obj.x

同樣的陣列也應該避免元素是undefined,也要避免竄改陣列長度造成空項目,例如:
https://ithelp.ithome.com.tw/upload/images/20201008/201204200R2DDVC7j2.png
否則的話,在使用filter()與map()時會造成不必要的麻煩。


上一篇
第22天:陣列的靜態方法
下一篇
第24天:Set()
系列文
JavaScript技術手冊閱讀筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言