JavaScript对象解构函数参数可提升调用清晰度、默认值直观性及字段选择灵活性;支持默认值、重命名、嵌套解构,但需为参数设默认空对象以防报错。

JavaScript 中用对象解构写函数参数,能避免传一堆零散参数,让调用更清晰、默认值更直观,也方便只传关心的字段。
基础写法:直接在形参位置解构对象
把原本接收整个对象的参数,改成直接解构出需要的属性:
// 传统写法
function getUserInfo(user) {
console.log(user.name, user.age, user.city);
}
// 解构写法
function getUserInfo({ name, age, city }) {
console.log(name, age, city);
}
getUserInfo({ name: '张三', age: 25, city: '北京' }); // 张三 25 北京
设置默认值:解构时直接赋默认值
解构支持为每个属性设默认值,比在函数体内判断更简洁:
function createUser({ name = '匿名', age = 18, role = 'user' } = {}) {
return { name, age, role };
}
createUser({ name: '李四' }); // { name: '李四', age: 18, role: 'user' }
createUser(); // { name: '匿名', age: 18, role: 'user' }(注意:必须给整个参数设默认 {},否则传 undefined 会报错)
重命名与嵌套解构:应对字段名不匹配或深层结构
当对象属性名和变量名冲突,或需要取嵌套属性时,可灵活处理:
立即学习“Java免费学习笔记(深入)”;
-
重命名:用
oldName: newName语法,比如{ userName: name } -
嵌套解构:一层层写下去,如
{ profile: { avatar, bio } } -
混合使用:可同时重命名、设默认值、解嵌套,例如:
function renderCard({ title, content, author: { name: authorName = '未知' }, tags = [] }) {
console.log(title, content, authorName, tags);
}
注意事项:避免常见坑
- 如果调用时不传参数或传
undefined,解构会失败——务必给整个参数设默认空对象= {} - 解构只读取对象自身可枚举属性,不继承原型链上的属性
- 不要在解构中使用计算属性名(如
{ [key]: val }),ES6 解构不支持运行时键名 - 想保留原对象?可以再加一个参数,比如
function fn({ a, b }, originalObj),或者用剩余属性{ a, b, ...rest }


















