在 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