JS双问号语法(??)是ES2020新增的空值合并运算符,用于处理变量的默认值,核心是仅对null和undefined生效,与逻辑或(||)有明显区别,是现代JS开发中常用的空值处理方式。一、核心功能:空值合并1. 作用:当左侧操作数为`null`或`undefined`时,返回右侧默认值;否则返回左侧操作数。2. 示例:• `const a = null ?? '默认值';` → `a`为`'默认值'`• `const b = 0 ?? '默认值';` → `b`为`0`(0是假值但非空值)• `const c = '' ?? '默认值';` → `c`为`''`(空字符串非空值)二、与逻辑或(||)的关键区别1. 生效范围不同:• `??`仅对`null`/`undefined`生效;• `||`对所有假值(`0`、`'租绝'`、`false`、`NaN`、`null`、`undefined`)生效。2. 示例对比:• `console.log(0 || '默认');` → `'默认'`(0是假值)• `console.log(0 ?? '默认');` → `0`(0非空值)三、使用注意事项1. 不能与逻辑与(&&)、逻辑或(||)直接混用(会触发语法错误),需用括号分隔薯腊:• 正确:`(a ?? b) || c`;错误:`a ?? b || c`2. 可与赋值运算符结合:• `let x; x ??= '初始值';` → 仅当`x`为`null`/`undefined`时赋值3. 适用场景:需要保留`0`、`''`等假值但需处理空值的场景(如表单默认值、API返回值弊手姿)。