js双问号语法

js双问号语法
最新回答
玩世

2022-01-04 00:24:21

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返回值弊手姿)。