最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript空值合并運算符??使用場景

 更新時間:2025年09月05日 08:50:13   作者:掘鐵  
這篇文章主要介紹了JavaScript空值合并運算符??的相關資料,??是一個js邏輯操作符,當左側的操作數為null或者undefined時,返回其右側數,否則返回左側數,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

一、核心概念

  1. 作用
    當左側表達式為 nullundefined 時,返回右側的默認值;否則返回左側的值。

  2. 與 || 的區(qū)別

    • || 會對 所有假值(如 0、''、false、NaN)觸發(fā)默認值。
    • ?? 僅對 nullundefined 觸發(fā)默認值,保留其他假值的語義。
    console.log(0 || 5);    // 5(0 是假值)
    console.log(0 ?? 5);    // 0(0 不是 null/undefined)
    

二、語法規(guī)則

leftExpr ?? rightExpr
  • 短路特性:若 leftExpr 不是 null/undefined,直接返回左側值,不計算右側。
  • 優(yōu)先級:低于 ||&&,但高于三元運算符 ? :。建議用 () 明確優(yōu)先級。

三、使用場景

1. 變量默認值

const userInput = null;
const name = userInput ?? "Anonymous"; // "Anonymous"

2. 函數參數默認值

function greet(message) {
  const text = message ?? "Hello";
  console.log(text);
}
greet(null);    // "Hello"
greet(undefined); // "Hello"
greet("");      // ""(保留空字符串)

3. 對象屬性安全訪問

const config = {
  apiUrl: null,
  timeout: 0
};

const url = config.apiUrl ?? "https://default.api";
const timeout = config.timeout ?? 5000; // 0 被保留

4. 結合可選鏈?.使用

const user = {
  profile: null
};
const username = user?.profile?.name ?? "Guest"; // "Guest"

四、進階用法

1. 多級空值合并

const a = null;
const b = undefined;
const c = "Fallback";
const result = a ?? b ?? c; // "Fallback"

2. 與解構賦值結合

const settings = { theme: null };
const { theme = "light", fontSize = 16 } = settings;
// theme 使用 ?? 邏輯,fontSize 使用 = 默認值

3. 動態(tài)默認值

let defaultPort;
const port = process.env.PORT ?? (defaultPort = 3000);

五、注意事項

  1. 不可直接用于未聲明的變量

    // 錯誤示例(需確保變量已聲明)
    const value = undeclaredVar ?? 10; // ReferenceError
    
  2. 與 || 混用時的優(yōu)先級

    const a = null || undefined ?? "default"; // SyntaxError
    const b = (null || undefined) ?? "default"; // "default"
    
  3. 瀏覽器兼容性

    • 支持 ES2020+ 的環(huán)境(Chrome 80+, Firefox 72+, Node.js 14+)。
    • 舊環(huán)境需通過 Babel 插件 @babel/plugin-proposal-nullish-coalescing-operator 轉譯。

六、性能優(yōu)化

  • 避免重復計算:若右側是復雜表達式,用函數封裝避免副作用。
    const value = input ?? computeDefault(); // computeDefault() 僅在需要時執(zhí)行
    

七、替代方案(舊代碼兼容)

// 使用三元運算符模擬 ??
const value = (left !== null && left !== undefined) ? left : right;

總結

運算符觸發(fā)默認值的條件適用場景
??nullundefined保留其他假值(如 0、''
``

掌握 ?? 能顯著提升代碼可讀性,尤其在處理 API 響應、配置項等場景時,能更精準地控制默認值邏輯。

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

相關文章

  • Typescript 函數重載的實現(xiàn)

    Typescript 函數重載的實現(xiàn)

    本文主要介紹了Typescript 函數重載的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • JavaScript 反射和屬性賦值實例解析

    JavaScript 反射和屬性賦值實例解析

    這篇文章主要介紹了JavaScript 反射和屬性賦值實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • JS實現(xiàn)將手機號中間的幾位數字變成****功能

    JS實現(xiàn)將手機號中間的幾位數字變成****功能

    這篇文章主要介紹了用js如何實現(xiàn)將手機號中間的幾位數字變成****?_,今天,我們要實現(xiàn)一個很常見并且簡單的功能如何將手機號中間的幾位數變成****,需要的朋友可以參考下
    2023-09-09
  • Webpack打包詳細流程及代碼

    Webpack打包詳細流程及代碼

    這篇文章主要給大家介紹了關于Webpack打包詳細流程及代碼的相關資料,Webpack是一款非常流行的打包工具,它的主要作用是將項目中的各個模塊打包成靜態(tài)資源,以便于在瀏覽器中加載和運行,需要的朋友可以參考下
    2024-01-01
  • echarts柱狀圖的點擊事件代碼示例

    echarts柱狀圖的點擊事件代碼示例

    這篇文章主要給大家介紹了關于echarts柱狀圖點擊事件的相關資料,在實際的項目開發(fā)中我們通常會用到Echarts來對數據進行展示,有時候需要用到Echarts的點擊事件,增加系統(tǒng)的交互,需要的朋友可以參考下
    2023-09-09
  • 原生JS實現(xiàn)匯率轉換功能代碼實例

    原生JS實現(xiàn)匯率轉換功能代碼實例

    這篇文章主要介紹了原生JS實現(xiàn)匯率轉換功能代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Cordova(ionic)項目實現(xiàn)雙擊返回鍵退出應用

    Cordova(ionic)項目實現(xiàn)雙擊返回鍵退出應用

    這篇文章主要為大家詳細介紹了Cordova項目實現(xiàn)雙擊返回鍵退出應用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Promise面試題詳解之控制并發(fā)

    Promise面試題詳解之控制并發(fā)

    promise面試中經常會遇到的一個問題就是關于控制并發(fā)的,所以下面這篇文章主要給大家介紹了關于Promise面試題之控制并發(fā)的相關資料,需要的朋友可以參考下
    2021-05-05
  • 簡單理解js的冒泡排序

    簡單理解js的冒泡排序

    本篇文章主要介紹了JavaScript的冒泡排序,對其進行示例解析,具有很好的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • js判斷是否是手機頁面

    js判斷是否是手機頁面

    本文主要介紹了js判斷是否是手機頁面的方法。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03

最新評論

新源县| 旅游| 桃园县| 潞西市| 嵊泗县| 宝鸡市| 苗栗市| 蒲江县| 灵台县| 东乡族自治县| 东辽县| 和顺县| 麦盖提县| 清水河县| 双桥区| 阳新县| 莫力| 盈江县| 南开区| 嫩江县| 云阳县| 吴旗县| 东乡| 德昌县| 化德县| 安陆市| 陵水| 土默特右旗| 岫岩| 孟连| 望江县| 定南县| 宁乡县| 桐梓县| 兰州市| 虞城县| 安顺市| 南郑县| 忻城县| 怀宁县| 布尔津县|