狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

JavaScript中:|、||、?、?? 運算符的用法及使用場景

admin
2024年6月1日 17:5 本文熱度 1943

前言

大家好,今天我們來學(xué)習(xí)一下JavaScript中的幾個容易混淆的運算符,它們分別為|||???運算符,并通過一些例子和場景說明他們的用法,避免在項目開發(fā)中混淆它們的用法。

位運算符或(|

按位或( | )運算符在其中一個或兩個操作數(shù)對應(yīng)的二進制位為 1 時,該位的結(jié)果值為 1

例子:

const a = 3// 11
const b = 5// 101

console.log(a | b); // 111

在以上例子中,十進制3的二進制值為11,十進制5的二進制值為101,那么對ab使用|運算符計算的結(jié)果為111。簡單來說,其實有點像是在對應(yīng)二進制位為1的并集。

 11
101
// 保持位數(shù)一致,合并1
111

使用場景——合并權(quán)限:

const PERMISSION_READ = 1//    0001
const PERMISSION_WRITE = 2//   0010
const PERMISSION_EXECUTE = 4// 0100
const PERMISSION_ADMIN = 8//   1000

// 將READ和WRITE權(quán)限合并
const readAndWritePermissions = PERMISSION_READ | PERMISSION_WRITE;
console.log(readAndWritePermissions); // 輸出:3 (0011)

權(quán)限合并如何判斷是否具備合并后的權(quán)限?首先還得了解一下&運算符。

前面我們說了|像是求對應(yīng)二進制位為1的并集,那么&想必大家也能猜到一點,那就是求對應(yīng)位數(shù)為1的交集,只有兩個都為1時,對應(yīng)位才為1,否則為0

下面開始接著判斷前面合并的權(quán)限:

// 按規(guī)律設(shè)置權(quán)限值
const PERMISSION_READ = 1//    0001
const PERMISSION_WRITE = 2//   0010
const PERMISSION_EXECUTE = 4// 0100
const PERMISSION_ADMIN = 8//   1000

// 將READ和WRITE權(quán)限合并
const readAndWritePermissions = PERMISSION_READ | PERMISSION_WRITE;
console.log(readAndWritePermissions); // 輸出:3 (0011)

// 判斷readAndWritePermissions是否有可讀權(quán)限
consoloe.log(readAndWritePermissions & PERMISSION_READ)  // 0001 = PERMISSION_READ
// 計算過程
readAndWritePermissions:0011
PERMISSION_READ:        0001
result:                 0001
// 以上縮進為了讓大家便于閱讀計算交集

consoloe.log(readAndWritePermissions & PERMISSION_WRITE)  // 0010 = PERMISSION_WRITE
// 計算過程
readAndWritePermissions:0011
PERMISSION_WRITE:       0010
result:                 0010

如何一句話記住|和&的用法: 求對應(yīng)二進制位數(shù)為1并集交集

邏輯或運算符(||

JavaScript中,認為一個值不屬于真值的有以下情況:

  • false
  • 0
  • ''(空字符串)
  • null
  • undefined
  • NaN

邏輯或運算符||,用于判斷至少一個操作值是否為真。如果左側(cè)操作值為真,則返回它。如果為假,則計算并返回右側(cè)操作值。

測試例子:

// 由于沒有真值,所以a返回0
var a = false || 0  // a = 0
var b = '' || 0 || 1  // b = 1
var c = 1 || 2  // c = 1

場景例子:

let mobile = "152****5086";
let nickname = null;
let name = nickname || mobile;  // "152****5086"

由于nickname用戶昵稱為null,j即為假值,因此name的計算結(jié)果為mobile的值"152****5086"

三元運算符?

三元條件運算符JavaScript中唯一使用三個操作數(shù)的運算符。一個條件后跟一個問號(?),如果條件為真值則執(zhí)行冒號(:)前的表達式;若條件為假值,則執(zhí)行最后的表達式。該運算符經(jīng)常當(dāng)作if...else語句的簡捷形式來使用。

基本用法:

const age = 20;
const persion = age >= 18 ? "成年人" : "未成年人";
console.log(persion); // 輸出:成年人

進階用法:

const num = -1;
const result = num > 0 ? "正數(shù)" : num < 0 ? "負數(shù)" : "零";
console.log(result); // 輸出:負數(shù)

在以上例子中,首先判斷num是否大于零,條件不滿足,繼續(xù)執(zhí)行冒號:右邊的表達式判斷num < 0,發(fā)現(xiàn)滿足條件,直接返回結(jié)果負數(shù)

空值合并運算符(??

空合并運算符 (??) 也是一個邏輯運算符,當(dāng)其左側(cè)操作值為null或者undefined時,它返回其右側(cè)操作值,否則返回其左側(cè)操作值。它與||運算符不同,它不會將其他虛假值(false0''NaN)視為觸發(fā)回退。

例子1:

const name = null;
const name2 = 'vilan';

const result = name ?? name2;
console.log(result); // 輸出:vilan

在這個例子中,由于name的值為null,所以打印結(jié)果為vilan

例子2:

const age = 0;
const age2 = 18;

const result = age ?? age2;
console.log(result); // 輸出:0

在這個例子中,即使age0(被認為是假的),??操作符也不會將其視為回退的觸發(fā)器,因為0不是nullundefined。因此,result結(jié)果年齡的值為0

總結(jié)

邏輯或運算符 (||) 和空合并運算符 (??)這兩個運算符經(jīng)常會被混淆或誤解,所以我們在使用時要特別注意它們的內(nèi)部原理及用法,避免出現(xiàn)意料之外的錯誤。


該文章在 2024/6/1 17:07:08 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved