javascript函数参数支持对象和数组解构:对象解构提取属性并可设默认值、嵌套解构;数组解构按索引取值、支持跳位与剩余参数;可重命名变量;需防null/undefined报错,建议设默认空对象。

JavaScript 中可以在函数参数中直接使用解构语法,从传入的对象或数组中提取所需属性,让代码更简洁、语义更清晰。
对象参数解构:提取对象属性
当函数接收一个对象作为参数时,可以直接在参数位置写解构模式,无需先接收再手动取值。
例如:
function greet({ name, age = 18 }) {
return `Hello ${name}, you are ${age} years old.`;
}
greet({ name: 'Alice', age: 25 }); // "Hello Alice, you are 25 years old."
greet({ name: 'Bob' }); // "Hello Bob, you are 18 years old."
- 解构的变量名必须与对象属性名一致,否则得到
undefined - 支持默认值(如
age = 18),当属性缺失或为undefined时生效 - 支持嵌套解构:
{ user: { id, profile: { avatar } } }
数组参数解构:按位置提取元素
同样适用于数组参数,用方括号语法按索引提取值。
例如:
function sum([a = 0, b = 0, ...rest]) {
return a + b + rest.reduce((s, x) => s + x, 0);
}
sum([1, 2]); // 3
sum([1, 2, 3, 4]); // 10
- 可以跳过某些位置,用逗号占位:
([, , third]) => third - 支持剩余参数
...rest收集后续所有元素 - 默认值对数组元素也有效,但只在对应位置为
undefined时触发
混合解构与重命名
解构时可用 oldName: newName 语法重命名变量,避免命名冲突或提升可读性。
function logUser({ id: userId, name: fullName, isActive: enabled = true }) {
console.log(`ID: ${userId}, Name: ${fullName}, Active: ${enabled}`);
}
logUser({ id: 101, name: 'Charlie', isActive: false });
// ID: 101, Name: Charlie, Active: false
- 重命名后,函数体内只能用新名字(如
userId),原属性名不可访问 - 重命名和默认值可同时使用:
count: totalCount = 0
注意点与常见陷阱
解构参数本质仍是赋值操作,因此有几点需留意:
- 如果传入
null或undefined,会立即报错Cannot destructure property ... of ... as it is undefined - 安全做法是加一层默认空对象:
function fn({ a } = {}) {...} - 箭头函数同样支持:
const getName = ({ name }) => name; - 不能单独解构部分参数,整个参数列表要么全解构,要么配合普通参数(需放前面):
function f(a, { b }) { ... }
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











