ECMAScript 2021 中的逻辑运算符的严格模式详解

阅读时长 3 分钟读完

在 ECMAScript 2021 中,逻辑运算符在严格模式下有了重大的变化。这篇文章将深入探讨这些变化,并给出相应的示例代码。

传统逻辑运算符的问题

在传统的 JavaScript 中,逻辑运算符“||”和“&&”都会返回它们的一个操作数。例如:

在这种情况下,逻辑运算符的结果并不是一个严格的布尔值。这意味着我们可以在后续的代码中使用这些值,而不需要进一步的类型检查。

然而,这种行为会导致难以发现的错误。例如,以下代码将继续执行,即使“obj”为空:

这个问题可以通过使用严格的逻辑运算符来解决:

这样做会确保“obj”确实包含一个值,而不是一个“假值”。

严格逻辑运算符的使用

在 ECMAScript 2021 中,我们可以使用新的逻辑运算符“??”和“?.”,这些运算符解决了传统逻辑运算符的问题,并且可以在严格模式下使用。

  • “??” 运算符

“??” 运算符表示空位合并运算符。它的作用是将左操作数转换为布尔值,如果操作数为 null 或 undefined,则返回右操作数。否则返回左操作数。

例如:

在这个例子中,“obj”为 null,因此“value”将被赋值为“默认值”。

  • “?.” 运算符

“?.” 运算符表示可选链运算符。它的作用是判断一个变量是否为 null 或 undefined,如果是,则返回 undefined,否则返回指定的属性或方法。

例如:

在这个例子中,“obj”为 null,因此“value”将被赋值为 undefined,而不是抛出一个错误。

总结

ECMAScript 2021 中的逻辑运算符“??”和“?.”可以帮助我们在严格模式下更加安全地使用逻辑运算符。使用这些运算符可以避免由于隐式类型转换而导致的错误,并增强代码的可读性。

示例代码

以下是示例代码,用于演示“??”和“?.”运算符的使用:

-- -------------------- ---- -------
--- --- - - --------- - ------- ---------- - ------ ------- - --

-- ---------
------------------------ -- ----------------------- -- -----

-- ---------
------------------------------------- -- -----

--- ---- - -----

-- ---------
---------------- -- ------------- -- ------------------------ -- -------- ---------- ------ ---- -------- -------- -- ----

-- ---------
-------------------------------------- -- ---------

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6493eccc48841e989417eb7f

纠错
反馈