函数参数支持对象解构,可直接提取属性为变量;支持默认值、重命名、嵌套解构及数组解构,提升代码简洁性与健壮性。

直接在函数参数位置写对象解构语法,就能把传入的对象自动拆开成独立变量,不用再手动点属性取值。
基础写法:用 { key } 提取同名属性
函数形参直接写花括号,里面列出要提取的属性名:
- function greet({ name, age }) { return `Hi ${name}, ${age} years old`; }
- 调用时传一个含这些字段的对象:greet({ name: 'Lucy', age: 25 }) → 返回 "Hi Lucy, 25 years old"
- 如果对象里没有对应属性,变量值为 undefined
加默认值:防 undefined 报错
属性名后加 = 默认值,既处理缺失字段,也支持函数不传参时兜底:
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
- function logUser({ id = 0, role = 'guest' } = {}) { console.log(id, role); }
- logUser() 不会报错,输出 0 "guest"
- = {} 是关键——它让整个参数对象本身可选,否则传 undefined 会解构失败
重命名与嵌套:灵活应对各种结构
当对象字段名不理想或层级较深时,可用冒号重命名,或嵌套花括号解构:
- 重命名:function init({ timeout: t = 3000, retries: r = 2 }) { ... } → 把 timeout 存为变量 t
- 嵌套解构:function fetch({ url, headers: { token } }) { ... } → 直接拿到 headers.token 的值
- 注意:嵌套层级过深会影响可读性,建议只解到两层以内
数组也能解构:适合坐标、批量项等场景
若传的是数组,参数可用方括号解构,按索引顺序取值:
- function draw([x, y], [w, h]) { console.log(`at ${x},${y}, size ${w}×${h}`); }
- 调用 draw([10, 20], [100, 50]) → 输出 "at 10,20, size 100×50"
- 跳过中间项:function getStatus([, , code]) { return code; } → 取第三个元素










