ES11 中的 ??=(猫咪赋值)运算符及其实际用例

在 ES11 中,新增了一个 ??=(猫咪赋值)运算符,它是一种简写形式,用来给变量赋值,当且仅当该变量的值为 null 或 undefined 时才会执行赋值操作。这个新的运算符能够简化代码,提高开发效率,同时也可以帮助我们避免一些常见的错误。

猫咪赋值运算符的语法

猫咪赋值运算符的语法如下:

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

其中,variable 表示要赋值的变量,expression 表示用来赋值的表达式。如果 variable 的值为 null 或 undefined,则会将 expression 的值赋给 variable,否则不会执行任何操作。

猫咪赋值运算符的实际用例

下面我们来看一些猫咪赋值运算符的实际用例。

1. 给变量赋默认值

我们经常需要给变量赋一个默认值,以防止变量的值为 null 或 undefined。在以前,我们通常使用 || 运算符来实现这个功能。例如:

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

上面的代码中,如果 name 的值为 null 或 undefined,那么它会被赋值为 "Jerry"。但是,这种方式有一个问题,就是当 name 的值为 0 或 false 时,也会被认为是 null 或 undefined,从而触发默认值的赋值操作。而猫咪赋值运算符则不会出现这个问题,它只会在变量的值为 null 或 undefined 时才会执行赋值操作。例如:

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

上面的代码中,因为 name 的值不为 null 或 undefined,所以不会执行赋值操作,输出的结果仍然是 "Tom"。

2. 给对象赋默认值

除了给变量赋默认值,猫咪赋值运算符还可以用来给对象赋默认值。例如:

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

上面的代码中,因为 obj 对象中已经有了 name 属性,所以不会执行赋值操作,输出的结果仍然是 { name: "Tom", age: 18, sex: "male" }。而因为 obj 对象中没有 sex 属性,所以会执行赋值操作,将 sex 属性赋值为 "male"。

3. 简化代码

猫咪赋值运算符还可以用来简化代码。例如:

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

上面的代码中,因为 num 的值为 null,所以执行了赋值操作,将 num 赋值为 10。这个过程可以用猫咪赋值运算符来简化代码,如下:

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

总结

猫咪赋值运算符是 ES11 中新增的一个运算符,它能够简化代码,提高开发效率,同时也可以帮助我们避免一些常见的错误。我们可以用猫咪赋值运算符来给变量赋默认值,给对象赋默认值,以及简化代码。在实际开发中,我们应该充分利用这个新的运算符,以提高代码的可读性和维护性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65dd3c9f1886fbafa4a9a3ba