快速入门 ES12 中的 Nullish coalescing operator

阅读时长 4 分钟读完

什么是 Nullish coalescing operator?

Nullish coalescing operator 是 ES12 中新增的一个运算符,用来处理某些情况下 undefined 或 null 值的合并问题。它的语法为 ??,表示如果左侧的表达式的值为 nullundefined,则返回右侧的默认值。否则返回左侧的表达式结果。

与此相对应的是逻辑或(||)运算符。当左侧的表达式的值为 falsy 值(falsenull0""NaNundefined)时,逻辑或运算符会返回右侧的默认值。但当左侧的表达式的值为 nullundefined 时,逻辑或运算符也会返回右侧的默认值。

因此,在涉及到 nullundefined 值的处理中,使用 Nullish coalescing operator 更为严谨和准确。

如何使用 Nullish coalescing operator?

Nullish coalescing operator 可以用于任何类型的值。

假设我们有一个变量 foo

我们想要在该变量值为 nullundefined 时返回一个默认值,否则返回变量本身。可以使用 Nullish coalescing operator,如下所示:

foonullundefined 时,result 的值为 "default value";否则,result 的值为 foo 的值(在本例中为 null)。

当然,在表达式左侧可以是任何类型的值,例如布尔值:

Nullish coalescing operator 的优先级

Nullish coalescing operator 与逻辑或运算符在语义上有些相似,但它们的优先级是不同的。具体来说:

  • Nullish coalescing operator 的优先级比逻辑或运算符低。
  • 在使用时,应该将整个表达式用括号括起来,以避免出现优先级问题。

例如,考虑下面的代码:

这个代码使用了逻辑或运算符,在表达式左侧的值为 null 时会返回右侧的默认值。但是当变量 baz 的值为 0 时,就会出现问题。因为 0 是一个 falsy 值,所以逻辑或运算符也会返回 "default value",这并不是我们想要的结果。

因此,在处理可能出现 falsy 值的情况时,Nullish coalescing operator 更为可靠。例如,下面的代码:

当值为 0 时,返回的结果也是正确的:

需要注意的是,由于运算符优先级的问题,在使用 Nullish coalescing operator 时一定要加上括号:

总结

Nullish coalescing operator 是 ES12 中新增的一个运算符,用来处理 undefined 或 null 值的合并问题。它比逻辑或运算符更为严谨和准确,在处理可能出现 falsy 值的情况时使用更为可靠。需要注意,Nullish coalescing operator 的优先级比逻辑或运算符低,使用时应该加上括号以避免出现优先级问题。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6455873d968c7c53b0905326

纠错
反馈