iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 6
1

前面兩天提到的 ???. 都是針對 undefinednull 的值做一些運算。

?? 是將左側 undefinednull 回傳一個 default 值

undeinfed ?? 1 // 1
null ?? 1 // 1

?. 則是將讓左側為 undefinednull 的 property 回傳 undefined

let Undefined
Undefined?.property // undefined

let Null = null
Null?.property // undefined

這樣看起來 undefinednull 在使用上好像都一樣?究竟這兩者有什麼相同和不同的地方呢?我們來比較一下

相同之處

皆為

  • Primitive Type
  • falsy values

不同之處

\ undefined null
定義 未定義 定義為空值
typeof 'undefined' 'object'
JSON 無效 有效
序列化 JSON.stringify({ property: undefined }) // {} JSON.stringify({ property: null }) // { property: null }

什麼時候該使用哪一個?

依照場景下的意義

  • undefined 代表初始值 未被分配 或 定義
  • null 代表 空 或 未知

值得一提的是 TypeScript team 不使用 null 只用 undefined 也沒造成什麼問題,同時不同的 Library 有不同的作法,我們可以用 undeinfed == null 來避免區分他們。

參考資料

Head to Head Comparison Between Undefined and Null
Null vs. Undefined
Data types


上一篇
Optional Chaining
下一篇
git fetch & git pull
系列文
那些我還沒深入理解就開始使用的東西30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言