箭头函数参数支持解构赋值,可在形参中直接使用对象或数组解构语法,支持默认值、剩余参数及嵌套解构;但需注意括号包裹、返回对象需加小括号,且不绑定this、无arguments、不可构造。

箭头函数本身不直接“处理”解构赋值,但它能自然地与参数解构配合使用——关键在于:箭头函数的参数部分支持完整的解构语法,且这种写法既简洁又语义清晰。
箭头函数参数位置可直接解构
你可以在箭头函数的形参括号内直接写解构模式,而不是先接收整个对象或数组再手动提取。JavaScript 引擎会在调用时自动完成匹配和赋值。
- 对象解构参数:const getName = ({ name }) => name; —— 调用 getName({ name: 'Alice', age: 30 }) 返回 'Alice'
- 数组解构参数:const sumTwo = ([a, b]) => a + b; —— 调用 sumTwo([5, 3]) 返回 8
- 嵌套解构也成立:const getCity = ({ address: { city } }) => city; —— 适用于 { address: { city: 'Shanghai' } }
默认值与剩余参数可共存
解构参数支持设置默认值,也兼容剩余参数(...),这在函数接口设计中非常实用。
- 带默认值:const greet = ({ name = 'Guest', lang = 'en' }) => `Hello, ${name} (${lang})`;
- 结合剩余参数:const logFirstAndRest = ([first, ...rest]) => console.log(first, rest); —— logFirstAndRest([10, 20, 30]) 输出 10 [20, 30]
- 注意:解构失败时变量为 undefined,默认值仅在对应位置值严格等于 undefined 时生效
与传统函数的关键区别
虽然语法上支持解构,但箭头函数的固有特性仍需留意:
立即学习“Java免费学习笔记(深入)”;
- this 不变:解构参数不影响 this 绑定,它依然继承外层作用域的 this,适合回调场景
- 无 arguments:即使参数用了解构,也无法访问 arguments,必须用剩余参数替代,如 (a, b, ...rest) => {...}
- 不能作为构造函数:解构参数不能用于 new 调用,因为箭头函数没有 prototype
常见误用提醒
以下写法容易出错,需特别注意:
- 对象解构参数若未加括号会被解析为普通参数列表:(x, y) => x + y ≠ ({x, y}) => x + y
- 返回对象字面量必须用小括号包裹,否则花括号被当作函数体:() => ({ a: 1 }) ✅,() => { a: 1 } ❌(后者返回 undefined)
- 解构失败不报错,但可能引发后续逻辑错误,例如:({ id }) => id.toString() 在传入 {} 时会报 Cannot read property 'toString' of undefined


















