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