You need to enable JavaScript to run this app. JavaScript如何为函数入参对象的单个键设置默认值而非整个对象
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何为函数入参对象的单个键设置默认值而非整个对象

实现方案

直接用ES6对象解构的参数语法,仅为指定的城市键绑定默认值,完全不需要给整个person对象加全局兜底默认值,写法如下:

// 解构时的键名要和实际入参的键完全匹配,示例入参里的城市键是大写开头的City,如果实际业务用的是小写city,替换成对应名称即可
const doSomething = ({ City = '需要的默认城市值' }) => {
  // 函数内直接用City变量就行:入参传了实际City值就用实际值,City为undefined时自动替换成默认值
  // 业务逻辑...
}

关键说明

  • 完全符合你“不给整个对象设置默认值”的要求:如果调用时完全不传person参数,代码会直接抛出“解构undefined”的错误,和你最初没有任何参数默认值的原函数行为完全一致,不会出现类似person = null的全局兜底逻辑。
  • 默认值触发逻辑刚好匹配需求:仅当City键的值严格等于undefined时才会触发默认值,传入null、空字符串、0等其他假值时不会自动替换,刚好适配你要处理“city为undefined”的场景。
  • 如果函数内部还要用name、Age这些其他属性,可以一起解构出来,不会影响City的默认值逻辑:
const doSomething = ({ name, Age, City = 'Dresden' }) => {
  // 直接使用解构出来的name、Age、City变量即可
}

常见踩坑提醒

  • 别随手给解构表达式加= {}的参数默认值,也就是别写成({ City = '默认值' } = {})——这个等号后面的空对象本质就是给整个解构入参加了全局默认值,和你反感的person = null写法逻辑是一样的。
  • 注意键名大小写:你示例里的城市键是首字母大写的City,如果实际业务用的是小写city,一定要把解构里的键名改成完全一致的写法,不然永远读不到实际传入的城市值,只会一直命中默认值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 12:06:04