JS:为什么这会回归真实?

时间:2014-06-12 01:09:09

标签: javascript

0 + 1 === 1 || 1 + 1 === 2 || 2 + 1 === 10

有人可以解释为什么这句话会返回 true

单独地,前两个是真的,最后一个是假的。但是 OVERALL ,语句返回true。您似乎只需要在较长的语句列表中使用一个真实语句,以使OVERALL语句返回true。这是对的吗?

试图巩固我对布尔人的理解。欢呼声。

4 个答案:

答案 0 :(得分:6)

好吧,||会返回第一个truthy值,如果有的话:

1 || ANYTHING_IN_THE_WORLD ; // returns 1

所以你真正拥有的是

0 + 1 === 1

这是真的。是的,你的理解是正确的。


扩展执行顺序:

Operator precedence在这里发挥作用:

0 + 1 === 1 || 1 + 1 === 2 || 2 + 1 === 10

首先我们有补充:

1 === 1 || 2 === 2 || 3 === 10

然后我们进行了平等检查:

true || true || false;

如上所述,true || ANYTHING_AT_ALL为真,因此最终输出为true

答案 1 :(得分:0)

||or运营商。因此,如果条件一条件两个条件3为真,则该语句为真。

我建议您在这里阅读JavaScript:https://developer.mozilla.org/en/docs/Web/JavaScript

答案 2 :(得分:0)

它返回true,因为使用OR运算符(||),first true将返回true。

评估将执行:

> 1- is (0+1===1)

=>真正!然后返回true。

这个

> 0+1===1 || 1+1000===1

将因同样的原因返回true。

答案 3 :(得分:0)

“有些苹果是紫色的,或者有些苹果是绿色的”是正确的,因为一些苹果是绿色的就足够了。当其中一个或两个都成立时,a OR b将成立。 a AND b需要两者都是真的。

因此,表达式中的某些项为true的事实使整个表达式成立。如果您将||替换为&&,则不会。

事实上,

  

似乎您只需要在较长的语句列表中使用一个真实语句,以使OVERALL语句返回true。这是对的吗?

(几乎)完全正确。我所提出的唯一修正是将“true”替换为“truthy”,至少在JavaScript的上下文中是这样。例如,3 || 5不是true,而是3 - 而3不是true 是真的。