JavaScript函数默认参数仅在传入undefined时生效,不处理null、0、false等falsy值;支持表达式和前置参数引用;旧环境应避免用||而改用??或显式undefined判断。

JavaScript 中给函数参数设置默认值,最直接的方式是使用 ES6 引入的默认参数语法,它会在参数未传入、或传入的是 undefined 时自动启用兜底值。
基础写法:用等号直接赋默认值
在函数声明或箭头函数的形参列表中,用 = 指定默认值:
function greet(name = "陌生人") { return `你好,${name}!`; }greet(); // "你好,陌生人!"greet("小明"); // "你好,小明!"greet(undefined); // "你好,陌生人!"(触发默认值)greet(null); // "你好,null!"(不触发,默认值只对 undefined 生效)
注意:默认值只在参数为 undefined 时生效
JavaScript 的默认参数机制不会把 null、0、false、空字符串等“falsy 值”当作缺失处理。它们都会被原样接收:
function logCount(count = 10) { console.log(count); }logCount(0); // 输出 0,不是 10logCount(false); // 输出 false- 如果想对所有 falsy 值兜底,需手动判断:
count = count ?? 10(空值合并)或count || 10(注意 0 和 false 会被误覆盖)
支持表达式和函数调用作为默认值
默认值可以是任意合法表达式,包括函数调用、对象属性访问、甚至其他参数(但需注意顺序):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
function createId(prefix = "item", id = Date.now()) { return `${prefix}-${id}`; }-
function multiply(a, b = a * 2) { return a * b; }(b 可引用前面已定义的 a) function getConfig(options = {}) { const timeout = options.timeout ?? 5000; ... }
兼容旧环境:用逻辑或(||)要谨慎
在不支持 ES6 的老环境中,有人用 a = a || "default",但这会把 0、false、"" 等也替换成默认值。更安全的替代是:
a = a !== undefined ? a : "default";- 或用空值合并操作符(ES2020):
a = a ?? "default";(仅当 a 为null或undefined时生效)
默认参数让代码更简洁、意图更清晰,关键是理解它只响应 undefined —— 这是设计初衷,也是日常踩坑最多的地方。

















