ECMAScript 2021:探究新特性 Logical Assignment Operators

阅读时长 4 分钟读完

JavaScript 是一门动态类型、基于对象和解释型的编程语言。它是世界上最流行的编程语言之一,被用来开发前端和后端应用程序。ECMAScript 是 JavaScript 语言的标准,并提供了一些新的特性来帮助开发人员更方便的开发应用程序。其中,新增的 Logical Assignment Operators 就是一种非常实用的特性。

Logical Assignment Operators 的概述

ECMAScript 2021 新增特性 Logical Assignment Operators,简称 LAO,是一种用于简化代码的运算符,它结合了逻辑运算符和赋值运算符。该特性包括三种运算符:

  • ||=: Logical OR assignment operator
  • &&=: Logical AND assignment operator
  • ??=: Logical nullish assignment operator

这些运算符可以让我们使用更简洁、更易读的语句来操作变量。

Logical OR assignment operator

Logical OR assignment operator (||=) 的作用是将一个值赋给一个变量,但仅当该变量的值是假值 (false、null、undefined、0、NaN、"" 等) 时,该值才会被赋值。举个例子:

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

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

在这个例子中,如果变量 x 的值是假值,则会将 10 赋给它。而变量 y 的值不是假值,所以不会赋值为 20。

Logical AND assignment operator

Logical AND assignment operator (&&=) 的作用与 Logical OR assignment operator 相反,它将一个值赋给一个变量,仅当该变量的值是真值 (true, [1, 2], "foo" 等) 时,该值才会被赋值。举个例子:

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

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

在这个例子中,如果变量 x 的值是假值,则不会赋值为 10,因为条件不满足。而变量 y 的值是真值,所以将其赋值为 "bar"。

Logical nullish assignment operator

Logical nullish assignment operator (??=) 的作用是将一个值赋给一个变量,但仅当该变量的值为 undefined 或 null 时,该值才会被赋值。举个例子:

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

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

在这个例子中,如果变量 x 的值为 undefined 或 null,则它会被赋值为 10。而变量 y 的值不为 undefined 或 null,所以不会被赋值为 "bar"。

总结

Logical Assignment Operators 是一种非常实用的特性,可以让我们用更简洁、更易读的语句来操作变量。它们是 JavaScript 开发变得更加高效的关键。此外,还要注意它们可能导致一些意外的行为。因此,在使用 Logical Assignment Operators 时,要多加小心,确保代码的正确性。

示例代码:

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

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

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

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

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

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

纠错
反馈