欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2025年07月17日 10:33:40   作者:Mr.怪獸  
本文介紹了JavaScript中的空值合并運(yùn)算符??,解釋了它在null或undefined值時(shí)的使用,并對(duì)比了與邏輯運(yùn)算符||的不同之處,感興趣的可以了解一下

什么是空合并運(yùn)算符?

空合并運(yùn)算符 ?? (Nullish coalescing operator) 是一個(gè)邏輯運(yùn)算符,當(dāng)其左側(cè)操作數(shù)為 null 或 undefined 時(shí),它返回其右側(cè)操作數(shù),否則返回其左側(cè)操作數(shù)

const foo = null ?? 'default string';
console.log(foo);  //output: "default string"

const bar = 0 ?? 'default string'
console.log(bar);  //output: 0

基本語(yǔ)法

let result = value1 ?? value2;
  • 如果 value1 不是 null 或 undefined,則返回 value1。
  • 如果 value1 是 null 或 undefined,則返回 value2。

空值合并運(yùn)算符的工作原理

與 邏輯或 (||) 運(yùn)算符不同,空值合并運(yùn)算符只會(huì)考慮 null 和 undefined,而不會(huì)將其他假值(如 false、0NaN、"" 空字符串等)視為需要替代的值。

示例:

let a = null;
let b = 5;
let c = undefined;
let d = 0;

console.log(a ?? b);  // 5,因?yàn)?a 是 null
console.log(c ?? b);  // 5,因?yàn)?c 是 undefined
console.log(d ?? b);  // 0,因?yàn)?d 不是 null 或 undefined,而是 0

比較 ?? 和 ||

let x = 0;
let y = 10;

console.log(x || y);  // 10,因?yàn)?x 是假值(0)
console.log(x ?? y);  // 0,因?yàn)?x 不是 null 或 undefined

在上面的例子中:

  • 使用 || 時(shí),x 的值為 0,它被視為假值,所以返回了 y(即 10)。
  • 使用 ?? 時(shí),x 是 0,它不是 null 或 undefined,所以返回了 0。

使用空值合并運(yùn)算符的場(chǎng)景

提供默認(rèn)值: 當(dāng)一個(gè)值可能為 null 或 undefined 時(shí),可以用 ?? 來(lái)提供一個(gè)默認(rèn)值。

let userAge = null;
let defaultAge = 18;

let age = userAge ?? defaultAge;
console.log(age);  // 18,因?yàn)?userAge 是 null

避免無(wú)效值: 當(dāng)你有多個(gè)潛在的 null 或 undefined 值時(shí),可以使用空值合并運(yùn)算符來(lái)選擇第一個(gè)有效值。

let firstName = null;
let lastName = undefined;
let defaultName = "Anonymous";

let name = firstName ?? lastName ?? defaultName;
console.log(name);  // "Anonymous" 因?yàn)?firstName 和 lastName 都是 null 或 undefined

空值合并與可選鏈(?.)結(jié)合使用

空值合并運(yùn)算符和可選鏈(?.)結(jié)合使用時(shí),能夠更安全地訪(fǎng)問(wèn)對(duì)象的屬性,并且提供一個(gè)默認(rèn)值。

let user = { name: "Alice" };

let userAge = user?.age ?? 18;
console.log(userAge);  // 18,因?yàn)?user 對(duì)象中沒(méi)有 `age` 屬性,所以返回默認(rèn)值 18

在這個(gè)例子中,?. 用于安全地訪(fǎng)問(wèn) user.age,如果 age 不存在,它返回 undefined,然后 ?? 提供默認(rèn)值 18。

??運(yùn)算符 與 || 運(yùn)算符的區(qū)別

很多人會(huì)搞混?? 運(yùn)算符 與 || 運(yùn)算符,覺(jué)得這兩個(gè)實(shí)現(xiàn)的效果都一樣。其實(shí)這是不嚴(yán)謹(jǐn)?shù)?,它們之間還是有一些細(xì)微的差別。
?? 和 || 主要區(qū)別在于 假 (false) 和 假值(falsy) 的區(qū)別。

  • ?? 僅當(dāng)左操作數(shù)為 null 或 undefined 時(shí), ?? 運(yùn)算符才會(huì)將結(jié)果作為右操作數(shù)。
  • ||運(yùn)算符會(huì)將左操作數(shù)的所有假值(falsy) 的結(jié)果作為右操作數(shù)

例如:

// 1. 使用 0 作為輸入 
const a = 0;
console.log(`a || 10 = ${a || 10}`); // a || 10 = 10
console.log(`a ?? 10 = ${a ?? 10}`); // a ?? 10 = 0

// 2. 空字符串 '' 作為輸入
const a = ''
console.log(`a || "ABC" = ${a || "ABC"}`); // a || "ABC" = ABC
console.log(`a ?? "ABC" = ${a ?? "ABC"}`); // a ?? "ABC" = 

// 3. 使用 null 作為輸入
const a = null;
console.log(`a || 10 = ${a || 10}`); // a || 10 = 10
console.log(`a ?? 10 = ${a ?? 10}`); // a ?? 10 = 10

// 4. 使用 undefined 作為輸入
const a = {name: ''}

console.log(`a.name ?? 'varun 1' = ${a.name ?? 'varun 1'}`); 
console.log(`a.name || 'varun 2' = ${a.name || 'varun 2'}`);
// a.name ?? 'varun 1' = 
// a.name || 'varun 2' = varun 2

// 5. 使用 false 作為輸入
const a = false;
console.log(`a || 10 = ${a || 10}`); // a || 10 = 10
console.log(`a ?? 10 = ${a ?? 10}`); // a ?? 10 = false

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

您可能感興趣的文章:

相關(guān)文章

  • js帶鬧鈴功能的倒計(jì)時(shí)代碼

    js帶鬧鈴功能的倒計(jì)時(shí)代碼

    這篇文章主要為大家詳細(xì)介紹了js帶鬧鈴功能的倒計(jì)時(shí)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 比較詳細(xì)的javascript DOM 學(xué)習(xí)筆記

    比較詳細(xì)的javascript DOM 學(xué)習(xí)筆記

    看了很多的js dom學(xué)習(xí)資料,發(fā)現(xiàn)這個(gè)比較詳細(xì),特轉(zhuǎn)載給大家學(xué)習(xí)一下
    2008-06-06
  • JavaScript中一個(gè)奇葩的IE瀏覽器判斷方法

    JavaScript中一個(gè)奇葩的IE瀏覽器判斷方法

    在寫(xiě)原生的Javascript的時(shí)候,因?yàn)镮E的JS引擎與標(biāo)準(zhǔn)瀏覽器的JS引擎之間總有那么些差異,所以經(jīng)常會(huì)去判斷是否是IE瀏覽器
    2014-04-04
  • js date 格式化

    js date 格式化

    本文將以yyyy-MM-dd HH:mm:ss為例介紹js date 格式化的相關(guān)知識(shí)。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • 微信小程序如何連接Java后臺(tái)

    微信小程序如何連接Java后臺(tái)

    這篇文章主要介紹了微信小程序如何連接Java后臺(tái),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • JavaScript實(shí)現(xiàn)登錄拼圖驗(yàn)證的示例代碼

    JavaScript實(shí)現(xiàn)登錄拼圖驗(yàn)證的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript實(shí)現(xiàn)登錄拼圖驗(yàn)證的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-01-01
  • JS顯示日歷和天氣的方法

    JS顯示日歷和天氣的方法

    這篇文章主要介紹了JS顯示日歷和天氣的方法,涉及JavaScript日期與時(shí)間的操作技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2016-03-03
  • 最新評(píng)論