JavaScript中用||设默认值利用短路求值,对所有假值(false、0、''、null、undefined、NaN)均触发;??仅在null/undefined时生效,保留0/false/''等有效假值;选择取决于是否需区分“无值”与“明确为假值”。

JavaScript 中用逻辑或运算符(||)设置默认值,核心是利用其“短路求值”特性:当左侧操作数为真值(truthy)时,直接返回它;否则返回右侧操作数。这常被用来给变量提供后备值。
基础用法:给变量设默认值
适用于函数参数、对象属性读取等场景,但要注意它对所有假值(false、0、''、null、undefined、NaN)都会触发默认值,不区分有意传入的 0 或空字符串:
-
const name = userInput || '匿名用户';—— 若userInput是''或0,也会用'匿名用户' -
function greet(msg) { return msg || '你好'; }——greet('')返回'你好',而非空字符串
更安全的替代:空值合并运算符(??)
ES2020 引入的 ?? 只在左侧为 null 或 undefined 时才使用右侧值,保留 0、false、'' 等有效假值:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
const count = response?.data?.count ?? 0;—— 仅当count是null或undefined才用0 -
const isActive = user.enabled ?? true;——enabled是false也会保留,不会被替换成true
实际应用建议
选 || 还是 ?? 取决于你的业务逻辑是否需要区分“无值”和“明确为假值”:
立即学习“Java免费学习笔记(深入)”;
- 用
||:适合宽松兜底,比如用户名、标题等不允许为空的字段 - 用
??:适合精确控制,比如配置项、状态标志、计数器等需保留原始语义的场景 - 函数参数默认值推荐用解构默认值:
function fn({ timeout = 5000, retry = 3 } = {}) { ... },更清晰且支持??风格语义
不复杂但容易忽略真假值边界,写默认值前先想清楚:你真正想覆盖的是“缺失”,还是“所有非真值”?

















