91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

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

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

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

前言

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

位運算符或(|

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

例子:

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

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

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

 11
101
// 保持位數(shù)一致,合并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的并集,那么&想必大家也能猜到一點,那就是求對應位數(shù)為1的交集,只有兩個都為1時,對應位才為1,否則為0

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

// 按規(guī)律設置權限值
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

如何一句話記住|和&的用法: 求對應二進制位數(shù)為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中唯一使用三個操作數(shù)的運算符。一個條件后跟一個問號(?),如果條件為真值則執(zhí)行冒號(:)前的表達式;若條件為假值,則執(zhí)行最后的表達式。該運算符經(jī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)滿足條件,直接返回結果負數(shù)

空值合并運算符(??

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

例子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(被認為是假的),??操作符也不會將其視為回退的觸發(fā)器,因為0不是nullundefined。因此,result結果年齡的值為0

總結

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


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

主站蜘蛛池模板: 国产精品第三页 | 国产精品同 | 日本手机在线视频 | 成人精品视频 | 国产精品美女久 | 韩日中文字幕 | 午夜福利日韩在线 | 国产爱情片 | 欧美亚洲国产经典 | 国产香蕉人人干干 | 日本三级私人电影网 | 伦电影理论片 | 国产乱人视频在 | 日韩视频www永 | 国产免费观看视频 | 91国高清在线播放 | 欧美日韩一级国产 | 国产日产综合 | 精品免费精品 | 区三区重色口味 | 日韩欧美无线 | 国产欧美日韩一级 | 国产日产欧产综合 | 国产欧美一级在 | 人人揉人人捏人人添 | 午夜免费一级视频 | 日本高清不卡视频 | 日韩高清 | 国产专区一区 | 午夜小视频网 | 97亚洲精华液 | 3d漫画网| 另类综合视频在线 | 亚洲无码久久影视 | 亚洲无码1区 | 日韩在线观看网站 | 岛国精品免费 | 国产精品一区欧美日 | 欧美中字日韩一区 | 午夜影视污 | 成人动漫|