ECMAScript 2021 是 JavaScript 最新的版本,它增加了许多新特性和改进。其中一个最令人兴奋的新特性是 nullish 操作符,它可以帮助开发者更好地处理 null 或 undefined 值。在本文中,我们将深入探讨 nullish 操作符的概念、用法和示例代码,并为您提供指导意义。
什么是 nullish 操作符?
在 JavaScript 中,当我们使用 || 操作符时,如果第一个操作数为 falsy 值(例如 null 或 undefined),它将返回第二个操作数。这通常是不希望发生的行为。例如,假设我们有以下代码:
----- --- - ---- -- ---------- ----------------- -- ---------
在这种情况下,我们期望 foo 的值为 null,但实际上它是 'default'。这是因为 || 操作符将 null 解释为 falsy 值,因此它返回了默认值。
为了解决这个问题,ECMAScript 2021 引入了 nullish 操作符 ??。与 || 操作符不同,nullish 操作符只有在第一个操作数为 null 或 undefined 时才返回第二个操作数。如果第一个操作数为其他 falsy 值(例如 0 或 ''),则它将返回第一个操作数。
以下是一个使用 nullish 操作符的示例:
----- --- - ---- -- ---------- ----------------- -- ----
在这种情况下,foo 的值为 null,因为 nullish 操作符仅在第一个操作数为 null 或 undefined 时返回第二个操作数。
如何使用 nullish 操作符?
使用 nullish 操作符非常简单。只需在代码中使用 ?? 运算符即可。以下是一个使用 nullish 操作符的示例:
----- --- - ---- -- ---------- ----------------- -- ----
在这个例子中,foo 的值为 null,因为第一个操作数为 null。
您还可以使用 nullish 操作符来设置默认值。例如,假设我们有一个函数,它接受一个可选的参数:
-------- ----------- - ----- -------- - ------- ------ -- ----------- ---------------------- - -------------- -- ------- ------ ------------ -- ------- ------- ----------------- -- ------- -------
在这个例子中,我们使用 nullish 操作符来检查 name 参数是否为 null 或 undefined。如果是,我们使用默认值 'World'。
nullish 操作符与 || 操作符的区别
虽然 nullish 操作符和 || 操作符都可以用于设置默认值,它们之间有一些重要的区别。
首先,nullish 操作符仅在第一个操作数为 null 或 undefined 时返回第二个操作数。如果第一个操作数为其他 falsy 值(例如 0 或 ''),则它将返回第一个操作数。相比之下,|| 操作符会将 null、undefined、0、'' 和 false 等值解释为 falsy 值,并返回第二个操作数。
其次,nullish 操作符的优先级低于 || 操作符。这意味着如果我们在同一个表达式中使用这两个操作符,|| 操作符将首先执行。例如,假设我们有以下代码:
----- --- - ---- -- --------- -- ---------- ----------------- -- ---------
在这种情况下,|| 操作符首先执行,并返回 undefined。然后,nullish 操作符将 undefined 解释为 falsy 值,并返回 'default'。
总结
在 ECMAScript 2021 中,nullish 操作符是一个非常有用的新特性,它可以帮助开发者更好地处理 null 或 undefined 值。与 || 操作符不同,nullish 操作符只有在第一个操作数为 null 或 undefined 时才返回第二个操作数。使用 nullish 操作符非常简单,只需在代码中使用 ?? 运算符即可。请记住,nullish 操作符的优先级低于 || 操作符,因此请小心使用它们。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6602d29ed10417a222ea5c96