You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在双参数函数中为嵌套对象参数的部分键设置默认值

解决方案:用解构赋值为独立参数的对象键设置默认值

当然可行!你完全可以在函数定义层面搞定这个需求,核心就是把对象解构直接用到第二个参数上,同时给每个需要默认值的键单独指定默认值,再加上空对象的兜底默认值避免报错。

直接看代码示例:

function myFunction(name, { firstOption = 'first', secondOption = 'second' } = {}) {
  console.log(name);
  console.log(firstOption);
  console.log(secondOption);
}

为什么这个写法管用?

  1. 单个键的精准默认值:解构语法允许我们直接给options对象里的每个键单独设置默认值——不管调用时传入的对象包含哪些键,没传入的键都会自动用上预设的默认值。
  2. 兜底空对象防报错:末尾的= {}是关键,如果调用函数时完全不传第二个参数(比如myFunction('张三')),解构操作会把这个空对象作为目标,避免因为解构undefined而抛出错误。

测试不同调用场景:

  • 不传第二个参数:myFunction('张三') → firstOption为'first',secondOption为'second'
  • 只传部分键:myFunction('李四', { firstOption: '自定义第一选项' }) → secondOption自动使用默认值'second'
  • 传另一部分键:myFunction('王五', { secondOption: '自定义第二选项' }) → firstOption自动使用默认值'first'
  • 传完整对象:myFunction('赵六', { firstOption: 'foo', secondOption: 'bar' }) → 两个值都用传入的自定义内容

对比你之前的写法,你是给整个options对象设置了默认值,当传入部分键的对象时,整个options会被替换成你传入的对象,没传的键自然就不存在了。而上面的解构写法是逐个键处理默认值,正好解决了这个问题。

内容的提问来源于stack exchange,提问作者chilly_maximus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 17:07:37