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

可选链操作符(?.)在Safari中无法使用的问题及技术名称咨询

Optional Chaining Operator (?.)

你提到的这个用?.读取嵌套对象属性的技术,正式名称是可选链操作符(Optional Chaining Operator),它是ES2020(ES11)规范里新增的语法特性。

正如你观察到的,它的核心价值就是简化嵌套属性的安全访问:当访问路径上的某个节点是null或undefined时,表达式会直接返回undefined,不会继续尝试访问后续属性,从根源上避免了"Cannot read properties of undefined"这类崩溃错误,让代码更简洁健壮。

关于Safari的支持问题:没错,早期版本的Safari(包括移动端Safari)确实不支持这个语法。具体来说,Safari 13.1及以上版本才开始原生支持可选链操作符;如果你的用户还在使用13.0及更早的Safari版本,运行包含?.的代码就会抛出你遇到的SyntaxError: Unexpected token '.'错误。

如果需要兼容这些旧版Safari,有两种常用方案:

  • 借助Babel、TypeScript这类转译工具,把ES2020+的语法转译为低版本浏览器能识别的ES5代码;
  • 用传统的逻辑与(&&)判断替代,比如你示例里的代码可以改写为:
    console.log(obj1.key1 && obj1.key1.key2);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:37:40