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)
- 作用:用于逻辑判断,返回布尔值或短路操作的结果。
- 规则:
- 如果左侧操作数为 假值(
false、0、''、null、undefined、NaN),直接返回左侧操作数。 - 否则,返回右侧操作数。
- 如果左侧操作数为 假值(
- 示例:
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