在 ES11 中,新增了一种操作符,叫做 Nullish Coalescing(空值合并)操作符。这个操作符的作用是在变量为 null 或 undefined 时,返回一个默认值。这个操作符的语法是 ??
,它可以与其他操作符一起使用,也可以单独使用。
空值合并操作符的语法
空值合并操作符的语法是 ??
,它的作用是在变量为 null 或 undefined 时,返回一个默认值。下面是一些例子:
--- - - ---------- --- - - ----- --- - - -------- ------------- -- ----------- -- -- --------- ------------- -- ----------- -- -- --------- ------------- -- ----------- -- -- -------
在上面的例子中,变量 x
和 y
都是 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