javascript函数参数现代写法核心是默认值、剩余参数和解构赋值:默认值仅在undefined时生效;剩余参数...rest必须居末且为真数组;解构赋值可直接提取对象/数组属性并设默认值;三者常组合使用提升代码健壮性与可读性。

JavaScript 函数参数的现代写法,核心就三点:默认值让调用更宽松,剩余参数让接收更灵活,解构赋值让提取更精准。三者常组合使用,不是炫技,而是为了写出更健壮、更易读、更少出错的代码。
函数参数默认值:只在 undefined 时生效
默认值写在形参后,用 = 赋值,但注意它只在传入 undefined 时触发——null、0、false、空字符串都不会走默认逻辑。
- 基础写法:
function greet(name = 'guest') { return `Hello, ${name}`; } - 动态默认值支持函数调用:
function log(id = generateId()) { ... }(每次调用都执行) - 安全兜底建议配合空值合并:
function handle(data = {}) { const { id, status = 'pending' } = data ?? {}; ... }
剩余参数:必须放在参数列表末尾
用 ...rest 收集多余参数,返回的是真数组,可直接调用 map、filter 等方法。它不能出现在中间或开头,语法会报错。
- 正确:
function sum(first, second, ...rest) { return rest.reduce((a, b) => a + b, first + second); } - 错误:
function bad(...rest, last) { }(语法错误) - 替代
arguments:剩余参数是真正的数组,而arguments是类数组对象,无数组方法。
解构赋值用于函数参数:让接口意图一目了然
把对象或数组直接解构进形参,既省去手动取值步骤,又天然带校验和默认值能力。特别适合配置类、响应数据类函数。
- 对象解构:
function createUser({ name, email, role = 'user' }) { ... } - 嵌套解构:
function notify({ user: { id, profile: { avatar } } }) { ... } - 数组解构:
function processResponse([status, data, error]) { if (status === 200) { ... } } - 防御性写法:
function render({ title = '', items = [] } = {}) { ... }(= {} 防 null/undefined)
三者组合:真实场景中的典型写法
实际开发中,它们往往一起出现。比如一个通用请求封装函数:
function request(url, { method = 'GET', headers = {}, timeout = 5000 } = {}, ...params) { ... }- 这里:method 和 headers 是解构出的配置项,默认值提供安全底线;= {} 防止传入
null导致解构失败;...params 支持额外透传参数(如 query、body 等)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











