为什么a = 0 || false返回false,但在JavaScript中不是0?

时间:2018-09-18 11:34:36

标签: javascript

为什么在JavaScript中a = 0 || false返回false而不返回0

调试控制台的输出:

> a = 0 || false
false
> a
false

> a = 0
0
> a = a || false
false
> a
false

4 个答案:

答案 0 :(得分:2)

a = 0 || false

让我们分解一下,或者让我们遵循javascript的逻辑。

  1. 将一些表达式分配给a
  2. 正在评估表达式
  3. ||告诉我们如果 truthy 首先选择,否则选择第二。
  4. 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,而不是布尔值(truefalse)。说明:同上。最后计算的表达式是操作数22,并将其返回。

让我知道这是否回答了您的问题。

参考:https://codeburst.io/javascript-what-is-short-circuit-evaluation-ff22b2f5608c