JavaScript中函数参数缺失时自动为undefined,仅此值触发默认参数;null、0、false等均不触发,默认值机制严格基于undefined判定。

JavaScript 中函数参数缺失时自动变成 undefined,这是语言底层行为,不是错误;它直接决定默认值是否启用——只有 undefined 会触发默认值,null、0、false、空字符串等都不会。
参数缺失即为 undefined
函数定义了形参,但调用时没传对应实参,该参数值就是 undefined:
-
function greet(name) { console.log(name); }greet();→ 输出undefined - 这种行为与变量未赋值、对象无该属性、数组越界访问等场景一致,都返回
undefined
默认值只对 undefined 生效
ES6 默认参数机制的触发条件非常明确:仅当实参严格等于 undefined(包括不传参、显式传 undefined、解构失败产生的 undefined)时才启用:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
function fn(x = 'default') { return x; }fn()→'default'fn(undefined)→'default'fn(null)→null(不触发)fn(0)→0(不触发) - 解构参数同理:
function f({ a = 1 } = {}) { return a; }f({})→1(a是undefined)f({ a: null })→null(a是null,非undefined)
如何安全判断和处理
不要用 !x 或 x == undefined,它们会误判 0、false、'' 等假值:
立即学习“Java免费学习笔记(深入)”;
- 推荐方式一:
x === undefined - 更稳妥方式二:
typeof x === 'undefined'(可防未声明变量) - 若希望
null也走默认逻辑,用空值合并:x = x ?? 'fallback' - 也可在默认值后二次兜底:
function fn(x = 'default') { return x ?? 'backup'; }
主动报错代替静默默认
如果业务要求“缺参必须报错”,而不是给默认值,可以用函数作为默认参数来抛错:
function required() { throw new Error('参数不可省略'); }function send(url, options = required()) { ... }-
send();→ 直接抛出错误,而非静默使用默认值

















