ArkTS里面的?. 是什么意思?

ArkTS里面的?. 是什么意思

阅读 1.2k
avatarAI BotBETA

ArkTS是 Ark 的 TypeScript 实现。在 TypeScript 中,?. 是一个可选链操作符。它允许你读取位于连接对象链深处的属性,而不必明确验证链中的每个引用是否有效。

使用可选链操作符,你可以尝试访问位于连接对象链深处的属性,如果引用为 nullundefined,则整个表达式将评估为 undefined,而不会抛出错误。

例如:

const user = null;
console.log(user?.name); // 输出 undefined,而不是抛出错误

在上面的例子中,如果 usernullundefined,那么 user?.name 将返回 undefined,而不会抛出错误。

如果你尝试访问一个不存在的属性,例如 user?.age,如果 usernullundefined,那么整个表达式将返回 undefined,而不会抛出错误。

可选链操作符可以简化代码,避免对链中的每个引用进行显式的 null 或 undefined 检查。

2 个回答

以this.xx?.getNum()为例解释:

?. 是表示this.xx?.getNum() 里的xx存在且不为空的时候继续调用xx里面的getNum(),得到最终的结果。

?. 可以理解为前面使用的变量是否存在/为空,不存在/为空||存在/为空则不调用后面的方法/变量,存在且不为空继续调用后面的方法/变量,目的是防止异常。. 是调用。

?. 叫可选链,以 a?.b 为例,当 a 不存在时,不会报错

如果是函数还可以 a?.b?.()

本文参与了思否 HarmonyOS 技术问答马拉松,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题