javascript中??、||、&、&&的区别

143 阅读1分钟
1. ?? 和 || 的区别

?? 是 空值合并运算符(Nullish Coalescing Operator):当左侧操作数为 null 或 undefined 时,返回右侧操作数;否则返回左侧操作数

||逻辑运算符:在左侧操作数为任何“假值”时返回右侧操作数

let a = b ?? c // 当b === undefind || null时,a = c; 其余情况,a = b
let a = b || c // 当Boolean(b) === false时,a = c; 其余情况,a = b

// 示例
let b = '';
let c = 'backup';

let a = b ?? c; // a === ''
let a = b || c; // a === 'backup'
2. & 和 &&的区别
2.1 &:按位与运算符(Bitwise AND)
  • 作用:对两个操作数的每一位执行逻辑与操作。
  • 规则
    • 只有当两个操作数的对应位都为 1 时,结果位才为 1
    • 否则,结果位为 0
  • 示例
    let a = 5;   // 二进制: 0101
    let b = 3;   // 二进制: 0011
    let result = a & b; // 二进制: 0001,十进制: 1
    console.log(result); // 输出: 1
    
2.2 &&:逻辑与运算符(Logical AND)
  • 作用:用于逻辑判断,返回布尔值或短路操作的结果。
  • 规则
    • 如果左侧操作数为 假值false0''nullundefinedNaN),直接返回左侧操作数。
    • 否则,返回右侧操作数。
  • 示例
    let a = 5;
    let b = 0;
    let result = a && b; // 返回 b,因为 a 是真值
    console.log(result); // 输出: 0
    
2.3 示例
let a = 5;
let b = 3;
let result = a && b; // 逻辑与,返回 b 的值 3
let bitwiseResult = a & b; // 按位与,返回 1
console.log(result === bitwiseResult); // 输出: false