JavaScript中 ?、!和?? 的用法及區(qū)別詳解
1. 可選鏈操作符 ?.
用法: obj?.prop
或 obj?.[expr]
功能: 當(dāng)嘗試訪問一個深層嵌套的屬性時,如果對象obj
是null
或undefined
,使用?.
操作符可以避免拋出錯誤,而是直接返回undefined
,而不是嘗試訪問不存在的屬性導(dǎo)致的錯誤。
示例:
const user = null; console.log(user?.name); // 輸出 undefined 而不是拋出錯誤
2. 非空斷言操作符 !.
用法: obj!.prop
功能: 這個操作符告訴TypeScript編譯器你確定該表達(dá)式絕對不會為null
或undefined
,從而避免了類型檢查時的警告。需要注意的是,這僅影響編譯時的類型檢查,并不會改變運(yùn)行時的行為,因此如果實(shí)際上該表達(dá)式為null
或undefined
,依然會導(dǎo)致運(yùn)行時錯誤。
示例: (此示例假設(shè)在TypeScript環(huán)境下)
let user: User | null = fetchUserData(); console.log(user!.name); // 告訴TypeScript你確定user不是null或undefined
3. 空值合并操作符 ??
用法: value ?? fallback
功能: 當(dāng)value
為null
或undefined
時,返回fallback
指定的值;否則,返回value
本身。這與邏輯或||
操作符不同,因?yàn)?code>||會在value
為任何假值(如0、false、空字符串等)時就返回fallback
,而??
只在value
嚴(yán)格等于null
或undefined
時才進(jìn)行替換。
示例:
let num = null; const result = num ?? 42; // result為42,因?yàn)閚um是null
總結(jié)起來,?.
幫助安全地訪問對象屬性,!.
用于告訴TypeScript編譯器忽略可能的null
或undefined
檢查(使用時要確保安全),而??
則是在值為null
或undefined
時提供一個替代值。
到此這篇關(guān)于JavaScript中 ?、!和?? 的用法及區(qū)別詳解的文章就介紹到這了,更多相關(guān)JavaScript ?、!、??用法及區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript下的時間格式處理函數(shù)Date.prototype.format
這篇文章主要介紹了JavaScript下的時間格式處理函數(shù)Date.prototype.format的相關(guān)資料,需要的朋友可以參考下2016-01-01微信小程序之滑動頁面隱藏和顯示組件功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了微信小程序之滑動頁面隱藏和顯示組件功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06JavaScript實(shí)現(xiàn)圖片放大鏡效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)圖片放大鏡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06jquery根據(jù)錨點(diǎn)offset值實(shí)現(xiàn)動畫切換
點(diǎn)擊后僵硬的切換是不是很不爽,下面為大家介紹的是根據(jù)錨點(diǎn)offset值來實(shí)現(xiàn)動畫切換,喜歡的朋友不要錯過2014-09-09淺談javascript控制HTML5的全屏操控,瀏覽器兼容的問題
下面小編就為大家?guī)硪黄獪\談javascript控制HTML5的全屏操控,瀏覽器兼容的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10CSS鼠標(biāo)響應(yīng)事件經(jīng)過、移動、點(diǎn)擊示例介紹
本文為大家介紹下CSS 鼠標(biāo)響應(yīng)事件:鼠標(biāo)經(jīng)過CSS、鼠標(biāo)移動CSS、鼠標(biāo)點(diǎn)擊CSS以及示例,喜歡的朋友可以參考下2013-09-09JavaScript實(shí)現(xiàn)五種不同煙花特效
這篇文章主要給大家?guī)砦鍌€好看的基于 HTML+CSS+JS 的煙花特效,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)JavaScript有一定的幫助,需要的可以參考一下2022-01-01