2015-04-06 3 views
3

Пока я программировал, у меня был неожиданный результат в моей инструкции if.Как можно (false = false = true) быть истинным

Как в мире этот код может быть правдивым? я ничего, что могло бы помочь мне в W3S не нашел, и действительно хотел бы знать, почему эти сигналы «истинный»

window.alert(false == false == true); //alerts true 
window.alert(false == (false == true));//even this alerts true 
+0

Поскольку '(ложь == истина)' == ложь и 'лжи == false' равно истинный –

+0

[Приоритет операторов.] (Https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) – epascarello

+0

Помогает ли это, если я укажу, что вы также не можете написать '2 <3 <4', но вместо этого вам нужно написать' 2 <3 && 3 <4' ? – deceze

ответ

10

Первый случай

false == false == true 

будет оцениваться как

(false == false) == true 

потому expressions are evaluated from left to right по умолчанию. которая сводится к

true == true 

так false фактически равна false. Вот почему он оценивается как true.

Второй случай

false == (false == true) 

сводится к

false == false 

потому false не равна true. Вот почему все выражение равно true, потому что false равно false.

3

Верно ли, что false == true? Я думаю, что это не так, поэтому (false == true) - false и поэтому false == (false == true) (как мы уже заметили, вторая часть ложна).

Что касается первого примера - на самом деле независимо от порядка оценки он будет иметь силу (я оставляю это для вас как логическое упражнение). Тем не менее javascript гарантирует, что порядок оценки будет оставлен вправо, таким образом, это выражение будет таким же, как (false == false) == true. Снова я оставляю вам, чтобы доказать, что это правда.

1
false == false == true 

false == false, это true, которая равна true.

false == (false == true) 

false == true, это false, которая равна false.

4

Выполнение начнется с левой стороны.

window.alert(false == false == true); 

сперва false== false это правда. Тогда верно true==true.

Во втором случае, поскольку у вас есть скобка (), которая будет выполнена сначала.

false == true не соответствует действительности.

Тогда false == false это правда.

0

Первая линия - слева направо, он сравнивает false == false, который true, то по сравнению с true возвращается true

Вторая линия - слева направо, он сравнивает (false == true), который false, то сравнение false и false возвращается true

0

Оба правильные.

Случай 1: false == false == true
это похоже на (false == false) == true

Оценку false == false IS true и true == true IS true

Случай 2: false == (false == true)
это похоже на (false == true) == false

Оценка является false == true IS false и false == false IS true

Надеется, что это помогает

Смежные вопросы