深入理解typescript(Typescript-双问号)

深入理解typescript(Typescript-双问号)(1)

您可能在看代码时看到了双问号 (??),但不太了解问号的含义。 除非您有使用其他编程语言(例如 C#)的经验,否则您可能也不了解它。

双问号 (??) 也称为空值合并运算符,它们允许使用在运算符右侧设置的默认值,以防运算符左侧的初始值为空或未定义。 为了让事情更简单,让我们看一个例子。

深入理解typescript(Typescript-双问号)(2)

在我们之前的示例中,我们有两个变量:随机和颜色。 随机变量未定义。 因此,在声明和赋值给颜色变量的那一刻,它会默认为“红色”。

逻辑或 (||) 和空值合并运算符 (??) 之间的区别

如果您已经使用 JavaScript 或 TypeScript 有一段时间了,那么您很可能一直在使用逻辑 OR (||) 运算符为变量赋值。 如果我们使用前面的示例并将运算符更改为使用逻辑运算符,它将如下所示:

深入理解typescript(Typescript-双问号)(3)

您可能想知道:逻辑 OR 运算符和 nullish 合并运算符之间有什么区别?

这里,逻辑 OR 运算符在第一个表达式为false的情况下将使用默认值。以下这些值都会被认为是false,

  • false
  • 0
  • null
  • undefined

深入理解typescript(Typescript-双问号)(4)

这与空值合并运算符略有不同,因为后者将在初始表达式为空或未定义时使用默认值。 以下示例应该更清楚地说明两个运算符的差异:

深入理解typescript(Typescript-双问号)(5)

nullish 合并运算符是许多 JavaScript 和 TypeScript 开发人员在使用逻辑 OR 并且没有清楚地了解 JavaScript 中的所有虚假值时防止出现意外行为的解决方案。

比如下面的逻辑,如果用OR就会导致错误:

深入理解typescript(Typescript-双问号)(6)

使用??就会得到当前正确的温度0度。

感谢阅读!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页