javascript函数默认参数在实参为undefined时生效,支持表达式和解构赋值,但null等falsy值不触发;需用??或显式判断处理null等场景。

JavaScript 中可以用函数默认参数直接赋值,避免手动判断 undefined 或 null 后再赋默认值,写法更简洁、逻辑更清晰。
基本语法:在参数列表中用 = 指定默认值
函数声明时,在形参后加 = 值 即可。该值仅在对应实参为 undefined 时生效(注意:null、false、0、'' 等“falsy”值不会触发默认值):
function greet(name = 'Guest') { return `Hello, ${name}`; }greet(); // "Hello, Guest"greet('Alice'); // "Hello, Alice"greet(undefined); // "Hello, Guest"(触发默认值)greet(null); // "Hello, null"(不触发,默认值被忽略)
支持表达式和函数调用作为默认值
默认值可以是任意表达式,包括函数调用、对象字面量、甚至其他参数(只要前面已定义):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
function createId(prefix = 'item-', suffix = Date.now()) { return `${prefix}${suffix}`; }function multiply(a, b = a * 2) { return a * b; } // multiply(3) → 18function getConfig(options = {}) { return { timeout: 5000, ...options }; }
处理 null 或其他 falsy 值需显式判断
如果希望 null、空字符串等也走默认逻辑,不能只靠默认参数,要配合逻辑运算符或三元运算:
-
function getName(name) { name = name ?? 'Anonymous'; return name; }(使用空值合并操作符??) function getValue(val) { return val != null ? val : 'default'; }- 或者封装成工具函数:
const def = (v, d) => v == null ? d : v;
与解构赋值结合,简化对象/数组参数初始化
常用于配置对象,让调用更灵活且自带默认项:
function connect({ host = 'localhost', port = 3000, secure = false } = {}) { /* ... */ }connect(); // 使用全部默认connect({ host: 'api.example.com' }); // 只覆盖 hostconnect({}); // 同样使用全部默认(因为解构目标是 {})
不复杂但容易忽略细节:默认参数按顺序求值,右侧参数可引用左侧已定义的参数;它替代的是传统 if (!x) x = default; 的冗余写法,让初始化意图一目了然。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










