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