JS使用可選鏈操作符 (?.) 進(jìn)行空值檢查的操作
傳統(tǒng)空值檢
假設(shè)我們有一個(gè)嵌套的對(duì)象結(jié)構(gòu),想要訪問(wèn) user.address.city,但不確定 user、address 或 city 是否存在。傳統(tǒng)的空值檢查方法如下:
let city = null; if (user && user.address && user.address.city) { city = user.address.city; } // let city = user ? (user.address ? user.address.city : null) : null;
這些方法不僅冗長(zhǎng),而且容易出錯(cuò).
使用可選鏈操作符 (?.)
可選鏈操作符 (?.) 提供了一種更簡(jiǎn)潔的方式來(lái)處理這些情況。它允許我們?cè)谠L問(wèn)對(duì)象屬性之前檢查對(duì)象是否存在,從而避免運(yùn)行時(shí)錯(cuò)誤。
基本用法
let city = user?.address?.city;
如果 user 或 address 為 null 或 undefined,整個(gè)表達(dá)式會(huì)短路并返回 undefined,而不會(huì)拋出錯(cuò)誤。
示例
假設(shè)我們有以下對(duì)象結(jié)構(gòu):
const user = { name: "Alice", address: { street: "123 Main St", city: "Wonderland" } };
使用可選鏈操作符訪問(wèn) city:
let city = user?.address?.city; // "Wonderland" let country = user?.address?.country; // undefined
處理數(shù)組
const users = [ { name: "Alice", age: 25 }, { name: "Bob", age: 30 } ]; let secondUserAge = users[1]?.age; // 30 let thirdUserAge = users[2]?.age; // undefined
結(jié)合函數(shù)調(diào)用
const obj = { method: function() { return "Hello"; } }; let result = obj?.method(); // "Hello" let nonExistentResult = obj?.nonExistentMethod(); // undefined
優(yōu)點(diǎn)
- 簡(jiǎn)潔性: 減少了代碼量,提高了可讀性。
- 安全性: 避免了因訪問(wèn)不存在的屬性而導(dǎo)致的運(yùn)行時(shí)錯(cuò)誤。
- 靈活性: 可以方便地處理復(fù)雜的嵌套結(jié)構(gòu)
總結(jié)
可選鏈操作符 (?.) 是 ES2020 引入的一個(gè)強(qiáng)大特性,它簡(jiǎn)化了空值檢查的過(guò)程,提高了代碼的安全性和可讀性。在現(xiàn)代 JavaScript 開(kāi)發(fā)中,合理使用可選鏈操作符可以顯著減少潛在的錯(cuò)誤,并使代碼更加簡(jiǎn)潔優(yōu)雅。
注意事項(xiàng)
可選鏈操作符只能用于訪問(wèn)屬性或調(diào)用方法,不能用于賦值。 在某些舊版本的瀏覽器或環(huán)境中可能不支持,需要使用 Babel 等工具進(jìn)行轉(zhuǎn)譯。
到此這篇關(guān)于JS使用可選鏈操作符 (?.) 進(jìn)行空值檢查的操作的文章就介紹到這了,更多相關(guān)JS可選鏈操作符空值檢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Echarts實(shí)現(xiàn)點(diǎn)擊列表聯(lián)動(dòng)餅圖的示例代碼
本文主要介紹了Echarts實(shí)現(xiàn)點(diǎn)擊列表聯(lián)動(dòng)餅圖的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05Javascript的異步函數(shù)和Promise對(duì)象你了解嗎
這篇文章主要為大家詳細(xì)介紹了Javascript異步函數(shù)和Promise對(duì)象,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03前端使用JS內(nèi)置Blob實(shí)現(xiàn)下載各種形式的文件實(shí)例
通過(guò)使用JavaScript我們可以很方便地實(shí)現(xiàn)文件的下載功能,這篇文章主要給大家介紹了關(guān)于前端使用JS內(nèi)置Blob實(shí)現(xiàn)下載各種形式文件的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06對(duì)于Javascript 執(zhí)行上下文的全面了解
下面小編就為大家?guī)?lái)一篇對(duì)于Javascript 執(zhí)行上下文的全面了解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09javascript與css3動(dòng)畫(huà)結(jié)合使用小結(jié)
本文給大家講述的是如何使用javascript結(jié)合CSS動(dòng)畫(huà)來(lái)實(shí)現(xiàn)一些占用資源更少,更優(yōu)化的動(dòng)畫(huà)效果,思路十分巧妙,這里推薦給小伙伴們參考下。2015-03-03element?ui?-?el-button?重新渲染后disabled屬性失效問(wèn)題解決
這篇文章主要介紹了elementui el-button重新渲染后disabled屬性失效問(wèn)題解決,解決方法也很簡(jiǎn)單,給el-button元素添加key值就可以了,需要的朋友可以參考下2023-07-07原生js實(shí)現(xiàn)簡(jiǎn)單的Ripple按鈕實(shí)例代碼
本篇文章主要介紹了原生js實(shí)現(xiàn)簡(jiǎn)單的Ripple按鈕實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03Javascript load Page,load css,load js實(shí)現(xiàn)代碼
通過(guò)js動(dòng)態(tài)載入頁(yè)面和css或js的實(shí)現(xiàn)代碼,需要的朋友可以參考下。國(guó)外人寫(xiě)的,可以參考下。2010-03-03詳解Bootstrap glyphicons字體圖標(biāo)
本章將講解Bootstrap glyphicons字體圖標(biāo),并通過(guò)一些實(shí)例了解它的使用,字體圖標(biāo)是在 Web 項(xiàng)目中使用的圖標(biāo)字體。字體圖標(biāo)在下載的Bootstrap的fonts文件夾中2016-01-01