对象解构配合剩余参数可高效分离关键字段与其余属性,支持嵌套默认值防错、敏感字段过滤、配置合并及函数参数灵活适配,使用时需注意安全兜底避免null/undefined报错。

对象解构配合剩余参数,能快速分离关注字段与无关字段,避免手动遍历或重复取值,让处理配置、API响应、表单数据等场景更干净直接。
提取关键字段 + 保留其余属性
当只关心几个核心属性,又想保留其他所有字段时,用解构明确取走所需项,再用剩余参数收集成新对象:
-
写法必须把 rest 放在解构末尾,比如
const { id, name, ...rest } = user; - rest 只收集对象自身的可枚举属性,不包含原型链上的内容
- 适合做“参数清洗”:把业务字段和配置选项分开,如
{ userId, userName, ...options }
嵌套结构 + 默认值防错
深层对象容易因某层为 undefined 导致报错,解构时结合默认值和空对象兜底更安全:
- 不要直接写
address.city,而应写address = {}, address: { city = 'Unknown' } = {} - 重命名同时设默认值也常见:
{ status: code = 200, message: msg = 'OK' } = res - 函数参数里这样写,能省掉一堆
if (!obj?.xxx)判断
过滤敏感字段或合并配置
借助解构跳过特定键,或用 rest 拿到剩余部分,实现轻量级数据脱敏或配置覆盖:
- 剔除密码、token:
const { password, token, ...safeUser } = userData; - 合并默认配置与用户配置:
const { theme, lang, ...custom } = { ...defaults, ...userPrefs }; - 注意:解构 null 或 undefined 会直接报错,务必提前
|| {}安全兜底
函数参数解构 + rest 灵活适配
把解构直接写进函数形参,让调用方传对象更自然,内部逻辑也更聚焦:
- 支持默认值:
function createPost({ title, content, tags = [] }) { ... } - 分离主参数与扩展选项:
function fetchUser({ id, signal }, { timeout = 5000, retry = 1 } = {}) { ... } - rest 也可用于第二个参数对象,比如收集所有未声明的配置项

















