javascript函数默认参数仅在参数严格等于undefined时生效,包括省略参数或显式传undefined;null、0、false、空字符串等falsy值不会触发默认值,解构参数需先判断整体是否undefined再处理属性默认值。

JavaScript 函数默认参数只在参数值严格等于 undefined 时生效——包括完全不传参、或显式传入 undefined。它不会把 null、0、false、空字符串等 falsy 值当作“缺失”来处理。
触发默认值的两种明确情况
只有以下情形会启用默认值:
- 调用时完全省略该参数:
greet() - 显式传入
undefined:greet(undefined)
常见误区:这些值 不会 触发默认值
哪怕语义上像“空”,只要不是 undefined,就会原样使用:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
-
greet(null)→ 使用null,不走默认 -
greet(0)→ 使用0,不走默认 -
greet(false)→ 使用false,不走默认 -
greet('')→ 使用空字符串,不走默认
解构参数中的默认值逻辑
当参数是对象或数组解构时,需分两层判断:
- 先看整个参数是否为
undefined(或未传):若是,先用外层默认值兜底(如= {}) - 再对解构出的属性应用其自身的默认值(如
{ host = 'localhost' }) - 注意:
connect(null)会直接报错,因为null无法解构,且null !== undefined,外层默认对象不生效
想对所有 falsy 值兜底?得手动处理
默认参数机制不覆盖 falsy 值,如需类似行为,应在函数体内用空值合并操作符或条件判断:
- 推荐:
count = count ?? 10(仅对null和undefined替换) - 慎用:
count = count || 10(会把0、false、''都误替换成10) - 显式判断:
if (count === undefined) count = 10
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










