3

如果 x 为空,我已经看到了两者x || []x ?? []用于提供后备值。有没有这两个给出不同结果的情况?

4

3 回答 3

2

如果x是一个非空的虚假值,那将是不同的。

x = 0;
x = x ?? []
console.log(x);



y = null;
y = y ?? []
console.log(y);

于 2021-08-30T03:01:40.163 回答
1

这些表达式是 Javascriptx || []x ?? []的逻辑赋值。

x ?? []用于表示null未定义的情况,同时x || []表示trueifabis true

  • x ?? []通过评估表达式的左侧是否为空或未定义来工作。

  • x || []通过评估 ifabis 来工作true。如果a为真,则在 if 语句中继续。如果b为真,则继续执行 if 语句。

于 2021-08-30T09:35:48.983 回答
0

他们做不同的事情。

??被称为 Nullish 合并运算符https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator

并检查评估的左侧是否为空或未定义,如果不是,则分配评估的右侧。

当您检查一个变量时,前一个非常有用,如果您正在检查zero它,该变量的值将是错误的。

||是逻辑运算符https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR

logical operator任何其他逻辑运算符一样工作。将评估左侧,然后评估右侧

null || 1 // output 1
undefined || 1 // output 1
0 || 1 // 1 <-- there are cases where you want to treat zero as a truthy value and **that's where the nullish operator is handy**
于 2021-08-30T03:07:37.097 回答