亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JS的空值合并運(yùn)算符(??)的使用

 更新時(shí)間:2023年12月04日 12:01:02   作者:田本初  
空值合并運(yùn)算符是一個(gè)邏輯運(yùn)算符,當(dāng)左側(cè)的操作數(shù)為null或undefined時(shí),會(huì)返回右側(cè)操作數(shù),否則返回左側(cè)操作數(shù),本文就來(lái)詳細(xì)的介紹一下如何使用

前言

空值合并運(yùn)算符(??)是一個(gè)邏輯運(yùn)算符,當(dāng)左側(cè)的操作數(shù)為nullundefined時(shí),會(huì)返回右側(cè)操作數(shù),否則返回左側(cè)操作數(shù)。

與邏輯或運(yùn)算符(||)的區(qū)別

邏輯或運(yùn)算符(||)是一個(gè)布爾邏輯運(yùn)算符,即當(dāng)左側(cè)操作數(shù)會(huì)被強(qiáng)制轉(zhuǎn)為布爾值,所有假值(“”,0,NaN,null,undefined)都會(huì)隱式轉(zhuǎn)換為false時(shí),此時(shí)會(huì)返回右側(cè)操作數(shù)??墒钱?dāng) 0,""和NaN 需要當(dāng)做有效值時(shí),邏輯或運(yùn)算符(||)會(huì)導(dǎo)致以下錯(cuò)誤:

let count = 0;
let text = "";

let res = count || 42;
let message = text || "hi!";
console.log(res); // 42,而不是 0
console.log(message); // "hi!",而不是 ""

相比邏輯或運(yùn)算符(||),空值合并運(yùn)算符(??),如果左側(cè)操作數(shù)為0,“”,NaN,也會(huì)被返回。

let count = 0;
let text = "";

let res = count ?? 42;
let message = text ?? "hi!";
console.log(res); // 0
console.log(message); // ""

總結(jié)

當(dāng)你需要 0,""和NaN 作為有效值時(shí),使用空值合并運(yùn)算符(??),否則使用邏輯或運(yùn)算符(||)。

與 OR(||) 和 AND(&&) 運(yùn)算符

與 OR 和 AND 邏輯運(yùn)算符相似,當(dāng)左表達(dá)式不為 null 或 undefined 時(shí),短路,不會(huì)對(duì)右表達(dá)式進(jìn)行求值。

function A() {
  console.log("函數(shù) A 被調(diào)用了");
  return undefined;
}
function B() {
  console.log("函數(shù) B 被調(diào)用了");
  return false;
}
function C() {
  console.log("函數(shù) C 被調(diào)用了");
  return "foo";
}

console.log(A() ?? C());
// 依次打印 "函數(shù) A 被調(diào)用了"、"函數(shù) C 被調(diào)用了"、"foo"
// A() 返回了 undefined,所以運(yùn)算符兩邊的表達(dá)式都被執(zhí)行了

console.log(B() ?? C());
// 依次打印 "函數(shù) B 被調(diào)用了"、"false"
// B() 返回了 false(既不是 null 也不是 undefined)
// 所以右側(cè)表達(dá)式?jīng)]有被執(zhí)行

不能與 OR 和 AND 運(yùn)算符共用

?? 不能與 AND(&&)和 OR(||)運(yùn)算符組合使用。會(huì)拋出語(yǔ)法錯(cuò)誤(因?yàn)榭罩岛喜⑦\(yùn)算符和其他邏輯運(yùn)算符之間的運(yùn)算優(yōu)先級(jí)/運(yùn)算順序是未定義的)。

錯(cuò)誤寫法:

null || undefined ?? "666"; // 拋出 SyntaxError
true || undefined ?? "666"; // 拋出 SyntaxError

但是,如果配合括號(hào)來(lái)顯示表明運(yùn)算優(yōu)先級(jí),是可行的。

(null || undefined) ?? "666"; // 返回 "666"

實(shí)例

const nullValue = null;
const emptyText = ""; // 空字符串,是一個(gè)假值,Boolean("") === false
const someNumber = 42;

const valA = nullValue ?? "valA 的默認(rèn)值";
const valB = emptyText ?? "valB 的默認(rèn)值";
const valC = someNumber ?? 0;

console.log(valA); // "valA 的默認(rèn)值"
console.log(valB); // ""(空字符串雖然是假值,但不是 null 或者 undefined)
console.log(valC); // 42

使用場(chǎng)景

antd組件庫(kù)

select組件的placeholder屬性,只有當(dāng)值為null或undefined時(shí)才會(huì)展示,如果 0,""和NaN 為有效值,空值合并運(yùn)算符(??)就適用于判斷value。

如上只是一個(gè)簡(jiǎn)單舉例,空值合并運(yùn)算符(??)適用于一切 0,""和NaN 為有效值的場(chǎng)景。

到此這篇關(guān)于JS的空值合并運(yùn)算符(??)的使用的文章就介紹到這了,更多相關(guān)JS 空值合并運(yùn)算符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 小程序開發(fā)?page-container?頁(yè)面容器彈出對(duì)話框功能的實(shí)現(xiàn)

    小程序開發(fā)?page-container?頁(yè)面容器彈出對(duì)話框功能的實(shí)現(xiàn)

    這篇文章主要介紹了小程序開發(fā)?page-container?頁(yè)面容器,彈出對(duì)話框,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • JavaScript對(duì)象原型鏈原理詳解

    JavaScript對(duì)象原型鏈原理詳解

    這篇文章主要介紹了JavaScript對(duì)象原型鏈原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 詳解ES6語(yǔ)法之可迭代協(xié)議和迭代器協(xié)議

    詳解ES6語(yǔ)法之可迭代協(xié)議和迭代器協(xié)議

    這篇文章主要介紹了詳解ES6語(yǔ)法之可迭代協(xié)議和迭代器協(xié)議,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-01-01
  • javascript創(chuàng)建動(dòng)態(tài)表單的方法

    javascript創(chuàng)建動(dòng)態(tài)表單的方法

    這篇文章主要介紹了javascript創(chuàng)建動(dòng)態(tài)表單的方法,實(shí)例分析了javascript動(dòng)態(tài)操作頁(yè)面表單元素的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 微信小程序?qū)崿F(xiàn)側(cè)邊分類欄

    微信小程序?qū)崿F(xiàn)側(cè)邊分類欄

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)側(cè)邊分類欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 百度小程序自定義通用toast組件

    百度小程序自定義通用toast組件

    這篇文章主要介紹了百度小程序自定義通用toast組件,百度小程序的toast僅支持在頁(yè)中展示,不能自定義位置、字體大小、在單個(gè)文本中增加icon等需求;因此自定義一個(gè)全局可通用的Toast,需要的朋友可以參考下
    2019-07-07
  • 使用Axios攔截器優(yōu)化HTTP請(qǐng)求與響應(yīng)的實(shí)踐案例

    使用Axios攔截器優(yōu)化HTTP請(qǐng)求與響應(yīng)的實(shí)踐案例

    在前端開發(fā)中,HTTP 請(qǐng)求是與后端交互的重要方式,為了提高代碼的可維護(hù)性、復(fù)用性以及用戶體驗(yàn),使用 Axios 攔截器是非常常見的做法,本文將詳細(xì)介紹如何使用 Axios 的請(qǐng)求攔截器和響應(yīng)攔截器,需要的朋友可以參考下
    2024-11-11
  • js實(shí)現(xiàn)上傳并壓縮圖片效果

    js實(shí)現(xiàn)上傳并壓縮圖片效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)上傳并壓縮圖片的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Script的加載方法小結(jié)

    Script的加載方法小結(jié)

    對(duì)動(dòng)態(tài)加載腳本,需要重點(diǎn)關(guān)注的一個(gè)問題是,所動(dòng)態(tài)加載的JS腳本的接口依賴問題。
    2011-01-01
  • 微信小程序使用字體圖標(biāo)的方法

    微信小程序使用字體圖標(biāo)的方法

    這篇文章主要為大家詳細(xì)介紹了微信小程序使用字體圖標(biāo)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05

最新評(píng)論