ECMAScript 2020:使用??nullish coalescing operator

ECMAScript是一种由Ecma国际标准化组织(Ecma International)制定的脚本语言标准,也就是JavaScript的标准。每年都会推出新的版本,ECMAScript2020是在2020年发布的最新规范。其中一个新的操作符——nullish coalescing operator,可以让我们更便捷的处理null或undefined的情况。

nullish coalescing operator是什么?

nullish coalescing operator有一个中文名叫做“??运算符”,它是一种逻辑运算符。这个运算符用于将两个值进行比较,返回第一个定义(非null、非undefined)的值。如果两个值都是null或undefined,返回第二个值。

其实可以理解为,使用nullish coalescing operator时,如果第一个值定义了,使用第一个值;如果第一个值为null或undefined,使用第二个值。

下面是运算符示例:

const foo = null ?? 'bar';
console.log(foo); // 'bar'

const baz = undefined ?? 'qux';
console.log(baz); // 'qux'

上面的代码中,foo为null,代码打印bar,baz为undefined,代码打印qux。

与||的区别

在JavaScript中,还有一个或运算符||,也可以用于处理null或undefined的情况。但是nullish coalescing operator与||有所不同。当||运算符遇到0、''、false等falsy值时,它也会返回第二个值。而nullish coalescing operator只有在值为null或undefined时才返回第二个值。

下面是运算符比较示例:

const foo = '' || 'bar';
console.log(foo); // 'bar'

const baz = 0 ?? 'qux';
console.log(baz); // 0

上面的代码中,foo为'',但||运算符返回第二个值bar。而baz为0,但nullish coalescing operator不会返回第二个值。

因此,在处理特定情况下,我们可能更倾向于使用nullish coalescing operator。

在实践中使用nullish coalescing operator

在实践中,nullish coalescing operator的一个典型用例是设置默认值。在这种情况下,我们只想在变量为null或undefined时为其提供默认值。

看下面的代码:

const foo = null;
const bar = 'bar';

const baz = foo || bar;
console.log(baz); // 'bar'

在这里,我们返回默认值bar,因为foo的值为null。这是我们期望的结果吗?似乎不是。所以我们可以使用nullish coalescing operator作为一种更准确定义默认值的替代方式。

const foo = null;
const bar = 'bar';

const baz = foo ?? bar;
console.log(baz); // 'bar'

这里,我们返回默认值bar仅在foo为null或undefined时。这是我们想要的结果。

总结

nullish coalescing operator是ECMAScript2020规范中的新的操作符,它可以用来处理null或者undefined的情况。与或运算符||的区别在于,nullish coalescing operator只会在值为null或undefined时返回第二个值。在实践中,nullish coalescing operator可以用作设置默认值的替代方式,以获得更准确的结果。学会使用它,可以提高代码的可读性和可维护性。

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