如果 x 为空,我已经看到了两者x || []
并x ?? []
用于提供后备值。有没有这两个给出不同结果的情况?
问问题
110 次
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 || []
表示true
ifa
或b
is true
。
x ?? []
通过评估表达式的左侧是否为空或未定义来工作。x || []
通过评估 ifa
或b
is 来工作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 回答