JavaScript中的????和?||?有那些區(qū)別詳解
在JavaScript中,??(空值合并運(yùn)算符)和||(邏輯或運(yùn)算符)都可以用來處理變量值,但是切記這倆玩意不一樣,是有區(qū)別的。
??(空值合并運(yùn)算符)
空值合并運(yùn)算符 (??)是一個邏輯運(yùn)算符,當(dāng)左側(cè)的操作數(shù)為null或undefined時,返回右側(cè)的操作數(shù);否則,返回左側(cè)的操作數(shù)。
let a = null; let b = 5; let result = a ?? b; // result 將是 5,因?yàn)?a 是 null let c = 0; let d = "hello"; let result2 = c ?? d; // result2 將是 0,因?yàn)?c 不是 null 或 undefined
||(邏輯或運(yùn)算符)
邏輯或運(yùn)算符 (||)是一個短路邏輯運(yùn)算符,當(dāng)左側(cè)的操作數(shù)為假值(如false、0、""、null、undefined 或 NaN)時,返回右側(cè)的操作數(shù);否則,返回左側(cè)的操作數(shù)。
let x = 0; let y = "default"; let result3 = x || y; // result3 將是 "default",因?yàn)?0 被視為假值 let z = null; let w = "hello"; let result4 = z || w; // result4 將是 "hello",因?yàn)?null 被視為假值 let result5 = null || undefined || 0 || ""; // 全是假值時,會返回最后一個 ''
區(qū)別
假值檢查:
??只檢查null或undefined。||檢查所有假值(false、0、""、null、undefined、NaN)。
類型強(qiáng)制轉(zhuǎn)換:
??不會對操作數(shù)進(jìn)行類型轉(zhuǎn)換,它直接返回原始值。||會進(jìn)行類型強(qiáng)制轉(zhuǎn)換,如果左側(cè)的操作數(shù)可以轉(zhuǎn)換為假值,則返回右側(cè)的操作數(shù)。
使用場景:
??通常用于設(shè)置默認(rèn)值,當(dāng)左側(cè)的值可能為null或undefined時。||以前常用于設(shè)置默認(rèn)值,但現(xiàn)在推薦使用??,因?yàn)樗鼫?zhǔn)確地處理了 null 和 undefined 的情況。
總結(jié)
到此這篇關(guān)于JavaScript中的 ?? 和 || 有那些區(qū)別的文章就介紹到這了,更多相關(guān)JS中??和||區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript獲取本機(jī)IP地址的實(shí)現(xiàn)方法
JavaScript本身受限于瀏覽器安全機(jī)制無法直接獲取本機(jī)IP,但可通過WebRTC、Ajax請求等間接方式獲取公網(wǎng)IP,本文介紹了多種使用JS獲取IP的方法,需要的朋友可以參考下2025-10-10
JS彈出可拖拽可關(guān)閉的div層完整實(shí)例
這篇文章主要介紹了JS彈出可拖拽可關(guān)閉的div層完整實(shí)現(xiàn)方法,包括對div彈出層的樣式及功能的實(shí)現(xiàn)技巧,非常具有實(shí)用價值,需要的朋友可以參考下2015-02-02
FullCalendar日歷插件應(yīng)用之?dāng)?shù)據(jù)展現(xiàn)(一)
fullcalendar作為一個功能完善的日歷插件使用非常廣泛,在web開發(fā)開發(fā)過程 中非常流行。它與ext js 中的calendar非常類似,但考慮到extjs 比較“復(fù)雜龐大”,所以我在開發(fā)開發(fā)過程中都會優(yōu)先考慮fullcalendar2015-12-12

