在 ECMAScript 2021 中,Nullish coalescing operator(以下简称 Nullish operator)是一个新的操作符,它为 JavaScript 开发者提供了更方便、更可靠的方式来检查和设置变量的默认值。但是,在使用 Nullish operator 时,开发者需要注意其与另一个操作符 || 的区别,以避免意外的错误。
Nullish operator 与 || 的区别
Nullish operator 和 || 的共同之处是,它们都可以用来处理默认值。比如,当使用 || 操作符时,可以使用以下代码设置一个变量的默认值:
const foo = x || 'default value';
如果 x 的值是 falsy (例如 null、0、undefined 等),那么 foo 的值就会变成 'default value'。但是,如果 x 是一个空字符串或者布尔值 false 的话,那么 foo 的值也会变成 'default value',这并不是我们想要的结果。
为了解决这个问题,Nullish operator 出现了。使用以下代码可以设置变量的默认值:
const foo = x ?? 'default value';
如果 x 的值是 null 或者 undefined,那么 foo 的值就会变成 'default value'。但是,如果 x 是一个空字符串或者布尔值 false 的话,那么 foo 的值依然为 x。
Nullish operator 的应用场景
Nullish operator 主要用于处理变量默认值。举个例子,假设我们有一个用户对象,其中可能会包含一个名字属性。使用以下代码可以设置默认值:
const name = user.name ?? 'default name';
如果 user 对象中存在 name 属性,则使用该属性值。否则,使用 'default name' 作为 name 的值。
Nullish operator 还可以用于避免 JavaScript 中常见的 bug。比如,以下代码可能会出现错误:
function doSomething(param) { const value = param || 0; // ... }
当 param 的值为 false、'' 等 falsy 值时,value 的值会变成 0,这可能会引起一些意外的错误。为了避免这种情况的发生,可以使用以下代码:
function doSomething(param) { const value = param ?? 0; // ... }
这样,只有当 param 的值为 null 或者 undefined 时,value 的值才会变成 0。
总结
Nullish operator 是 ECMAScript 2021 中的一个新操作符,它可以使变量的默认值设置更加可靠。与之前的 || 操作符相比,Nullish operator 可以避免一些常见的 JavaScript bug。但是,在使用 Nullish operator 时,需要注意其与 || 操作符的区别,以避免意外的错误。
Nullish operator 的应用场景主要在于处理变量默认值以及避免 bug。如果你想让你的代码更加可靠,那么可以尝试在适当的场景下使用 Nullish operator。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6528a4f07d4982a6ebb2b033