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

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

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

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

前言

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

位運算符或(|

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

例子:

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

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

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

 11
101
// 保持位數一致,合并1
111

使用場景——合并權限:

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

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

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

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

下面開始接著判斷前面合并的權限:

// 按規律設置權限值
const PERMISSION_READ = 1//    0001
const PERMISSION_WRITE = 2//   0010
const PERMISSION_EXECUTE = 4// 0100
const PERMISSION_ADMIN = 8//   1000

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

// 判斷readAndWritePermissions是否有可讀權限
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

如何一句話記住|和&的用法: 求對應二進制位數為1并集交集。

邏輯或運算符(||

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

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

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

測試例子:

// 由于沒有真值,所以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的計算結果為mobile的值"152****5086"。

三元運算符?

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

基本用法:

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

進階用法:

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

在以上例子中,首先判斷num是否大于零,條件不滿足,繼續執行冒號:右邊的表達式判斷num < 0,發現滿足條件,直接返回結果負數。

空值合并運算符(??

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

例子1:

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

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

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

例子2:

const age = 0;
const age2 = 18;

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

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

總結

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


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