什么是 Nullish 合并 – ?

||理论与差异 和 ??

What is Nullish coalescing – ??

Nullish 合并使我们能够为值是
或时指定
回退nullundefined

你可能写过这样的代码:

let employeeSalaryFromDb; const salary = employeeSalaryFromDb || 1000;

我们只是检查employeeSalaryFromDb值是否为truthy,如果是我们短路并将该值分配给 salary 变量。

如果employeeSalaryFromDb是,我们将运算符falsy右边的值
赋给变量。
||salary

在打字稿中你可以这样做:

let employeeSalaryFromDb; const salary = employeeSalaryFromDb ?? 1000;

在这种情况下,我们检查是否employeeSalaryFromDbnull,或者- 如果是 – 我们将运算符undefined右侧的值分配给
变量。
??salary

在任何其他情况下 – 我们短路并将值分配给
employeeSalaryFromDb变量salary

您可以看到||??运算符有何细微差别。

在这种情况下||– 如果我们falsy在运算符左侧有任何值 – 则返回运算符右侧的值。

对于??– 如果我们在运算符左侧有一个nullorundefined值 – 则返回运算符右侧的值。其中不包括, ,falsy等值''NaN0

  • ||– if (falsy) {返回运算符右边的值}
// a is false const a = '' || false;
  • ||– if (truthy) {返回真值}
// b is 'hello' const b = 'hello' || 'world';
  • ??– if (null || undefined) {返回运算符右边的值}
let c; // logs 'hello' console.log(c ?? 'hello'); const d = null; // logs 'hello' console.log(d ?? 'hello');
  • ??– if (falsy && !(null || undefined)) {return falsy value}
const e = 0; // logs 0 console.log(e ?? 'hello');
  • ??– if (truthy) {返回真值}
// logs 'hi' console.log('hi' ?? 'world');

结束

??运算符比||运算符更具体,因为它仅在左侧值为null
时才评估右侧的内容
undefined有时运算符对or
||有意想不到的行为,这些值是虚假的。所以你可以有类似的东西:0NaN

const quantity = 0; // logs 'specify quantity' even tho we have already done that console.log(quantity || 'specify quantity');

该工作的正确操作员是??

const quantity = 0; // logs 0 console.log(quantity ?? 'specify quantity');

截至 2021 年 2 月 26 日,??约 85.68% 的浏览器支持运营商 – caniuse.com

发表评论