ECMAScript 2020 中新的 Nullish 合并操作符:如何使用?

在 ECMAScript 2020 中,新增了一个 Nullish 合并操作符(Nullish Coalescing Operator),它可以帮助我们更方便地处理变量值为 null 或 undefined 的情况。本文将介绍 Nullish 合并操作符的使用方法,以及它的一些注意点。

Nullish 合并操作符的作用

在 JavaScript 中,我们经常需要判断一个变量是否为 null 或 undefined,然后才能进行下一步操作。例如:

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

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

在上面的代码中,我们使用了逻辑或操作符(||)来判断变量的值是否为 null 或 undefined。如果是,就使用默认值。但是,逻辑或操作符有一个缺点,就是当变量的值为 falsy 值时(比如 0、''、false 等),也会使用默认值,这不是我们想要的。

Nullish 合并操作符就是为了解决这个问题而生的。它只有在变量的值为 null 或 undefined 时,才会使用默认值。例如:

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

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

在上面的代码中,我们使用了 Nullish 合并操作符(??),它只有在变量的值为 null 或 undefined 时,才会使用默认值。

Nullish 合并操作符的注意点

虽然 Nullish 合并操作符看起来很简单,但是有一些需要注意的地方。

1. 优先级

Nullish 合并操作符的优先级比逻辑或操作符低,比三元表达式高。例如:

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

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

在上面的代码中,我们使用了逻辑或操作符和三元表达式来演示优先级的问题。由于 Nullish 合并操作符的优先级比逻辑或操作符低,所以在第一个表达式中,先执行了逻辑或操作符,导致默认值被覆盖了。而在第二个表达式中,由于 Nullish 合并操作符的优先级比三元表达式高,所以报错了。

2. 只能检查 null 和 undefined

Nullish 合并操作符只能检查变量的值是否为 null 或 undefined,不能检查其它 falsy 值。例如:

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

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

在上面的代码中,我们使用了 Nullish 合并操作符来检查变量的值是否为 null 或 undefined,但是它并不能检查变量的值是否为 '' 或 0。

总结

Nullish 合并操作符是 ECMAScript 2020 中新增的一个操作符,它可以帮助我们更方便地处理变量值为 null 或 undefined 的情况。但是,需要注意它的优先级和只能检查 null 和 undefined 的限制。在实际开发中,我们可以根据具体情况来选择使用逻辑或操作符还是 Nullish 合并操作符。

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