关于javascript:谈谈-JavaScript-中的空值合并操作符-Nullish-coalescing-operator

39次阅读

共计 647 个字符,预计需要花费 2 分钟才能阅读完成。

空值合并运算符 (??) 是一个逻辑运算符,仅当左侧(第一个参数)为空或未定义时才返回运算符(第二个参数)的右侧。在所有其余状况下,它返回第一个参数。

下列这两行测试代码,别离输入 Hello 和 132

因而,正如您在下面的示例中看到的那样,返回 Hello 是因为 undefined 位于运算符的左侧。如果 null 代替 undefined,后果将是雷同的。在第二个示例中,如果第一个参数中存在除 null 或 undefined 以外的任何内容,则操作员不会查看第二个参数,而是会立刻打印第一个值。

在空值合并操作符被退出 ECMAScript 2020 之前,每当咱们想为变量赋予默认值时,咱们应用 OR (||) 逻辑运算符。然而应用 OR 运算符有一些潜在的问题:|| 运算符并不辨别 false、0、“”和 null/undefined。所有这些都被 OR 运算符断定为返回 false,所以如果它遇到任何这些作为第一个参数,那么咱们将失去第二个参数作为后果,这使得 OR 运算符的可信度升高。

下图显示了 ?? 和 || 这两个操作符的差别:

遇到 0,|| 会返回左边的操作数 100,而因为 0 既不是 undefined 也不是 null,因此 0 ?? 100 会返回 0.

对于??的优先级问题

?? 运算符仅比 MDN 文档中给出的优先级表中的 OR 运算符低一位。这意味着它将在 = 和三元运算符之前以及 + 和 * 等运算符之后进行评估。

为了进步代码可读性,在应用 ?? 时请增加小括号:

SAP Spartacus 的实现中也有大量 ?? 的用法,如下图所示:

更多 Jerry 的原创文章,尽在:” 汪子熙 ”:

正文完
 0