空值合并运算符(??)用于安全处理 null 和 undefined,仅在左侧为 null 或 undefined 时返回右侧默认值。1. 可安全设置默认值,保留 0、false、空字符串等有意义的假值,如 const count = userInput ?? 10;2. 避免与 falsy 值混淆,确保数据逻辑清晰,如 const price = itemPrice ?? 0;3. 结合解构赋值使用,实现更灵活的 fallback,如 const displayName = name ?? '未知用户';4. 与可选链(?.)结合,安全访问嵌套属性并设默认值,如 const city = user?.address?.city ?? '未填写城市'。合理使用 ?? 能提升代码准确性与可读性,尤其适用于处理用户输入和 API 数据。

空值合并运算符(??)是 JavaScript 中用于处理 null 和 undefined 的逻辑操作符。它仅在左侧操作数为 null 或 undefined 时返回右侧值,相比逻辑或(||)更精确,避免了对 0、false、空字符串等“假值”的误判。以下是几个实用技巧。
1. 安全设置默认值
当需要为可能为 null 或 undefined 的变量设置默认值时,使用 ?? 可以保留有意义的假值。
例如:- const count = userInput ?? 10; // 如果 userInput 是 0 或 '',仍保留原值
- const isActive = status ?? true;
对比 || 操作符会把 0、''、false 都视为“无效”,而 ?? 只关注 null 和 undefined,更适合默认值场景。
2. 避免与 falsy 值混淆
某些情况下,假值本身是有意义的数据,不能随意覆盖。
立即学习“Java免费学习笔记(深入)”;
比如:- const name = userName ?? '匿名'; // 若 userName 为 "",结果是 ""
- const price = itemPrice || 0; // 错误:若 itemPrice 为 0,会被替换成 0(看似正确但逻辑混乱)
- const price = itemPrice ?? 0; // 正确:仅当 itemPrice 为 null/undefined 时才设为 0
3. 结合解构赋值使用
在对象解构中,可配合默认值和 ?? 提供更灵活的 fallback。
示例:- const { name, age = 18 } = person;
- const displayName = name ?? '未知用户';
这样即使 name 被显式设为 null,也能正确 fallback 到默认名称。
4. 链式判断与深层默认
结合可选链(?.)可以安全访问嵌套属性并设置默认值。
例如:- const city = user?.address?.city ?? '未填写城市';
- const level = config?.user?.permissions?.level ?? 1;
这种组合能有效防止访问不存在属性时出错,同时只在真正缺失时提供默认值。
基本上就这些。合理使用 ?? 能让代码更准确、可读性更强,尤其是在处理用户输入、API 返回数据时特别有用。









