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

JS解构参数设默认值时报Cannot read property of undefined如何解决

错误产生原因

你仅为解构得到的三个过滤器属性设置了默认值,没有给整个第三个参数对象设置默认值。当调用model函数时如果没有传入第三个参数,该参数本身就是undefined,此时对undefined执行对象解构操作,尝试读取placeFilter属性就会直接抛出报错。

修复方法

给第三个参数整体设置默认值为空对象{}即可,修改后的代码如下:

const model = (data, predictions, { placeFilter = true, startDateFilter = true, endDateFilter = true } = {}) => {
   const getData = () => data.filter(placeFilter).filter(startDateFilter).filter(endDateFilter)
}

逻辑说明

  • 原有写法的执行逻辑是:先把第三个参数当作对象读取placeFilter等属性,仅当属性不存在时才会赋值为true。如果第三个参数本身是undefined,读取属性的第一步就会报错,不会走到属性默认值赋值的逻辑
  • 新增= {}后,如果没有传入第三个参数,会先把该参数默认赋值为空对象,再从空对象中解构三个属性,此时属性不存在就会触发你预设的属性默认值,逻辑可以正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:15:07