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

如何在JavaScript中模拟PHP的??双问号运算符行为?

JavaScript中的深层属性安全访问方案

你遇到的问题很典型——JS里的??(空值合并操作符)本身只能处理null或undefined,但如果尝试访问一个不存在的对象属性链(比如user.information.company里的information根本不存在),在??生效之前就会先抛出TypeError,因为你不能读取undefined的company属性。

要实现类似PHP里那种对深层属性的安全访问并返回默认值的效果,你需要把**可选链操作符?.**和??结合起来用:

var user = JSON.parse(' { "info" : { "company" : "apple" } } ');
console.log(user.information?.company ?? 'N/A');
// 输出: N/A

原理说明:

  • user.information?.company:可选链操作符会逐层检查属性是否存在。如果user.information是undefined(就像你的例子里那样),整个表达式会直接返回undefined,而不会尝试访问company,也就避免了报错。
  • ?? 'N/A':空值合并操作符会在前面的表达式结果为null或undefined时,返回后面的默认值'N/A'。

如果你的场景里只需要处理属性不存在的情况,单独用?.也能返回undefined,但结合??可以确保最终得到一个有意义的默认值,和PHP的行为完全对齐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:59:05