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

JavaScript中如何结合多变量与可选链访问对象属性?

解决可选链结合多变量访问对象属性的语法错误

你遇到的语法错误是因为可选链操作符的写法不正确——?[type]不符合语法规范,正确的写法应该是?.[type]。

修正后的代码

let eventSelected = "333";
let type = "average"

let bestResult = result.personal_records[eventSelected]?.[type]?.best;

原理说明

?.[type]的作用是先校验result.personal_records[eventSelected]是否为null或undefined:

  • 如果是,表达式直接返回undefined,避免报错;
  • 如果不是,则正常访问该对象中type变量对应的属性,之后继续通过?.best做可选链校验。

可选优化方案(拆分步骤)

如果觉得链式调用可读性差,可以拆分步骤,让逻辑更清晰:

let eventSelected = "333";
let type = "average";

// 先获取对应项目的个人记录,不存在则为undefined
const targetRecord = result.personal_records?.[eventSelected];
// 再根据type获取对应数据,同样做可选链校验
let bestResult = targetRecord?.[type]?.best;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:02:58