ES11 中的新特性:Nullish Coalescing(空值合并)操作符

在 ES11 中,新增了一种操作符,叫做 Nullish Coalescing(空值合并)操作符。这个操作符的作用是在变量为 null 或 undefined 时,返回一个默认值。这个操作符的语法是 ??,它可以与其他操作符一起使用,也可以单独使用。

空值合并操作符的语法

空值合并操作符的语法是 ??,它的作用是在变量为 null 或 undefined 时,返回一个默认值。下面是一些例子:

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

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

在上面的例子中,变量 xy 都是 null 或 undefined,所以它们的值会被替换成默认值 'default'。变量 z 不是 null 或 undefined,所以它的值不会被替换。

空值合并操作符与逻辑或操作符的区别

空值合并操作符与逻辑或操作符有些相似,但它们有一些区别。下面是一个例子:

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

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

在上面的例子中,变量 x 是 false,但它的值不是 null 或 undefined,所以逻辑或操作符会返回 false。变量 y 不是 null 或 undefined,所以它的值不会被替换。空值合并操作符会返回变量的实际值,而不是变量本身的布尔值。

空值合并操作符的应用

空值合并操作符的应用场景很多,下面是一些例子:

1. 设置默认值

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

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

在上面的例子中,函数 greet 接受一个参数 name,如果 name 的值为 null 或 undefined,就会使用默认值 'world'

2. 避免错误

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

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

在上面的例子中,对象 obj 的属性 name 的值不是 null 或 undefined,所以它的值不会被替换。属性 age 的值是 undefined,所以它的值会被替换成默认值 'unknown'

3. 简化代码

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

在上面的例子中,变量 x 的值会先尝试调用函数 foo,如果它的值不是 null 或 undefined,就返回 foo() 的值。如果 foo() 的值是 null 或 undefined,就尝试调用函数 bar,如果它的值不是 null 或 undefined,就返回 bar() 的值。如果 bar() 的值是 null 或 undefined,就尝试调用函数 baz,最后返回 baz() 的值。

总结

空值合并操作符是 ES11 中的一个新特性,它可以在变量为 null 或 undefined 时,返回一个默认值。空值合并操作符与逻辑或操作符有些相似,但它们有一些区别。空值合并操作符的应用场景很多,它可以用来设置默认值、避免错误和简化代码。

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