为什么在JavaScript中a = 0 || false
返回false
而不返回0
?
调试控制台的输出:
> a = 0 || false
false
> a
false
> a = 0
0
> a = a || false
false
> a
false
答案 0 :(得分:2)
a = 0 || false
让我们分解一下,或者让我们遵循javascript的逻辑。
a
||
告诉我们如果 truthy 首先选择,否则选择第二。0
不真实,然后选择第二个选项,显然是false
答案 1 :(得分:1)
a=0
是一项任务。
但是,当您执行a=0 || false
时,表达式将转换为0 || false
,其结果为false
。
答案 2 :(得分:0)
a = a
不是逻辑比较,而只是一个赋值,因此您要做的只是0 = 0 || false
,因为0被认为是false
为什么不0
呢?
因为条件总是返回布尔值,所以0 -> false
如果您想检查a equals a
是否必须写a == a
a = 0;
console.log(a, a = a || false, a == a || false );
答案 3 :(得分:0)
这是因为运算符||
的最后求值是操作数false
。这与逻辑运算符的短路评估保持一致。如果您的表情是:
a = 0 || 22
输出将为22
,而不是布尔值(true
或false
)。说明:同上。最后计算的表达式是操作数22
,并将其返回。
让我知道这是否回答了您的问题。
参考:https://codeburst.io/javascript-what-is-short-circuit-evaluation-ff22b2f5608c