javascript中推荐使用空值合并运算符(??)设置默认值,因其仅在操作数为null或undefined时生效,能准确区分0、false、空字符串等合法假值;逻辑或(||)则对所有假值生效,易导致意外覆盖。

JavaScript 中最常用、最简洁的默认值赋值方式是使用逻辑或运算符(||)和空值合并运算符(??),但二者行为不同,适用场景也不同。
用 || 设置“假值”默认值
|| 返回第一个真值(truthy)操作数,如果左边是假值(falsy:如 null、undefined、0、''、false、NaN),就取右边的值。它适合忽略所有假值的情况。
例如:
let count = userInput || 10;如果 userInput 是 0、空字符串或 false,count 都会变成 10——这有时不符合预期(比如允许 0 是合法输入时)。
用 ?? 设置“空值”默认值(推荐)
?? 只在左侧为 null 或 undefined 时才使用右侧值,对 0、false、'' 等真/假值保持原样。这是 ES2020 引入的现代写法,语义更精准。
例如:
let count = userInput ?? 10;- 若
userInput === undefined→count = 10 - 若
userInput === null→count = 10 - 若
userInput === 0→count = 0(保留原值) - 若
userInput === ''→count = ''(保留原值)
函数参数默认值(语法级支持)
ES6 允许直接在函数定义中写默认参数,本质是基于 ?? 的语义(只在未传参或传 undefined 时生效):
调用时:
-
greet('Alice')→name='Alice',age=18 -
greet(undefined, 25)→name='Guest',age=25 -
greet(null, 25)→name=null,age=25(注意:null不触发默认值)
对象解构时设置默认值
解构赋值也支持默认值语法,同样只对 undefined 生效(null 会被解构出来):
加上 || {} 可防止 user 为 null 或 undefined 导致解构报错;而默认值本身只在属性值为 undefined 时起作用。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











