typescript使用 ?. ?? ??= 運(yùn)算符的方法步驟
可選鏈運(yùn)算符 (?.)
用于訪問(wèn)可能為 null 或 undefined 的屬性或方法,以避免出現(xiàn)異常錯(cuò)誤。如果使用 . 運(yùn)算符來(lái)訪問(wèn)一個(gè)可能為 null 或 undefined 的值,會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。而使用 ?. 運(yùn)算符,如果該值為 null 或 undefined,則表達(dá)式會(huì)短路,返回 undefined,而不會(huì)拋出異常。
例如:
let obj = { foo: { bar: 42 } };
let value = obj?.foo?.bar; // 如果 obj 或 obj.foo 或 obj.foo.bar 為 null 或 undefined,value 將為 undefined,否則為 42
空值合并運(yùn)算符 (??)
用于給定一個(gè)默認(rèn)值,當(dāng)一個(gè)表達(dá)式的值為 null 或 undefined 時(shí),返回默認(rèn)值。如果一個(gè)變量或表達(dá)式的值為 null 或 undefined,使用 ?? 運(yùn)算符可以提供一個(gè)備選值。
例如:
let x = null; let y = x ?? 5; // 如果 x 為 null 或 undefined,y 將為 5,否則為 x 的值
空值合并賦值運(yùn)算符 (??=)
用于將默認(rèn)值賦給一個(gè)變量,當(dāng)該變量的值為 null 或 undefined 時(shí)。如果一個(gè)變量的值為 null 或 undefined,可以使用 ??= 運(yùn)算符將一個(gè)默認(rèn)值賦給該變量。
例如:
let x = null; x ??= 5; // 如果 x 為 null 或 undefined,將把 5 賦給 x
??和 ||比較相似
?? 和 || 區(qū)別
假值:false、0、空字符串、null、undefined 等
?? 判斷左側(cè)操作數(shù)為null或undefined時(shí),返回右側(cè)操作數(shù)
|| 判斷左側(cè)操作數(shù)為’假值'時(shí),返回右側(cè)操作數(shù)
let a:any; let b = '1111'; let c = null; let d:any = 0; let e; e ??= a?.b ?? c ?? d?.a ?? b; a?.b:這是可選鏈運(yùn)算符 ?. 的使用,它嘗試訪問(wèn)變量 a 的屬性 b。如果 a 為 null 或 undefined,則表達(dá)式返回 undefined。 a?.b ?? c:這是空值合并運(yùn)算符 ?? 的使用,它判斷左側(cè)操作數(shù) a?.b 是否為 null 或 undefined。如果是,則返回右側(cè)操作數(shù) c 的值。否則,返回左側(cè)操作數(shù) a?.b 的值。 a?.b ?? c ?? d?.a:繼續(xù)使用空值合并運(yùn)算符 ??,判斷前一個(gè)表達(dá)式的結(jié)果 a?.b ?? c 是否為 null 或 undefined。如果是,則返回右側(cè)操作數(shù) d?.a 的值。否則,返回前一個(gè)表達(dá)式的結(jié)果。 a?.b ?? c ?? d?.a ?? b:再次使用空值合并運(yùn)算符 ??,判斷前一個(gè)表達(dá)式的結(jié)果 a?.b ?? c ?? d?.a 是否為 null 或 undefined。如果是,則返回右側(cè)操作數(shù) b 的值。否則,返回前一個(gè)表達(dá)式的結(jié)果。 根據(jù)上述表達(dá)式的邏輯,以下是對(duì)應(yīng)的執(zhí)行過(guò)程: a 的值為 undefined。 a?.b 的結(jié)果為 undefined。 a?.b ?? c 的結(jié)果為 null,因?yàn)樽髠?cè)操作數(shù)為 undefined,右側(cè)操作數(shù)為 null。 a?.b ?? c ?? d?.a 的結(jié)果為 0,因?yàn)樽髠?cè)操作數(shù)為 null,右側(cè)操作數(shù)為 d?.a,而 d 的值為 0。 a?.b ?? c ?? d?.a ?? b 的結(jié)果為 '1111',因?yàn)樽髠?cè)操作數(shù)為 0,右側(cè)操作數(shù)為 '1111'。 最終,變量 e 的值被賦為 '1111'。
到此這篇關(guān)于typescript使用 ?. ?? ??= 運(yùn)算符的方法步驟的文章就介紹到這了,更多相關(guān)typescript運(yùn)算符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js實(shí)現(xiàn)格式化金額,字符,時(shí)間的方法
這篇文章主要介紹了js實(shí)現(xiàn)格式化金額,字符,時(shí)間的方法,實(shí)例分析了javascript轉(zhuǎn)換金額、字符、日期等的常用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02
Javasript設(shè)計(jì)模式之鏈?zhǔn)秸{(diào)用詳解
這篇文章主要為大家詳細(xì)介紹了Javasript設(shè)計(jì)模式之鏈?zhǔn)秸{(diào)用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
javascript 中關(guān)于array的常用方法詳解
這篇文章主要介紹了javascript 中關(guān)于array的常用方法的相關(guān)資料,需要的朋友可以參考下2017-05-05
微信小程序?qū)崿F(xiàn)動(dòng)態(tài)渲染Markdown示例詳解
這篇文章主要為大家介紹了微信小程序?qū)崿F(xiàn)動(dòng)態(tài)渲染Markdown示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
JavaScript中undefined和null的區(qū)別
這篇文章主要介紹了 JavaScript中undefined和null的區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-05-05
前端根據(jù)鏈接生成二維碼的方案及相關(guān)常用API
這篇文章主要介紹了qrcode插件的使用方法,包括ES6/ES7示例、常用API及Vue示例,同時(shí)還討論了二維碼的優(yōu)點(diǎn)和缺點(diǎn),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-01-01
js實(shí)現(xiàn)樓層效果的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇js實(shí)現(xiàn)樓層效果的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07
用html+css+js實(shí)現(xiàn)的一個(gè)簡(jiǎn)單的圖片切換特效
這篇文章主要介紹了用html+css+js實(shí)現(xiàn)的一個(gè)簡(jiǎn)單的圖片切換特效,需要的朋友可以參考下2014-05-05
next.js之getStaticProps?getStaticPaths使用技巧解析
這篇文章主要為大家介紹了next.js之getStaticProps?getStaticPaths使用技巧解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

