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
相关产品推荐
相关产品推荐

