JavaScript中用||设默认值利用短路求值,但会误判0、''等假值;??更精准,仅在null/undefined时回退,默认值。

JavaScript 中用逻辑或运算符(||)给变量赋默认值,是利用其“短路求值”特性:当左侧操作数为真值(truthy)时,直接返回它;否则返回右侧操作数。这常用于提供后备值。
基本写法:用 || 设置默认值
语法简洁直观:
const value = someValue || 'default';
如果 someValue 是真值(如非空字符串、非零数字、对象、数组等),value 就取它;否则取 'default'。
const name = '' || 'anonymous'; // 'anonymous'const count = 0 || 10; // 10(注意:0 是假值)const user = null || { id: 1 }; // { id: 1 }
要注意的陷阱:假值(falsy)不等于“未定义”
|| 会把所有假值(false、0、''、null、undefined、NaN)都当作“需要回退”,有时不符合业务预期:
- 想保留
0作为合法数值,但0 || 100得到的是100 - 想保留空字符串
''表示“明确留空”,但'' || 'N/A'仍会覆盖
这时应改用空值合并运算符(??),它只在左侧为 null 或 undefined 时才使用默认值。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
更安全的替代方案:??(空值合并运算符)
ES2020 引入的 ?? 更精准地处理“真正缺失”的情况:
const value = someValue ?? 'default';
0 ?? 100 // 0(保留 0)'' ?? 'N/A' // ''(保留空字符串)undefined ?? 'fallback' // 'fallback'null ?? 'missing' // 'missing'
实际赋值中的常见写法
常用于函数参数、解构、配置合并等场景:
- 函数参数默认值:
function greet(name) { name = name || 'guest'; ... } - 解构时设默认:
const { title = 'Untitled' } = options || {};(注意这里先保底空对象再解构) - 链式取值加默认:
const city = user?.address?.city ?? 'Unknown';
不复杂但容易忽略细节,选 || 还是 ?? 取决于你希望“什么才算没值”。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










