Ответ 1
Поскольку 1 < 2
оценивается как true
а 3 > 2
- true
, вы в основном делаете:
console.log(true < 3);
console.log(true > 1);
Почему 3>2>1
возвращает false
а 1 < 2 < 3
возвращает true
?
console.log(1 < 2 < 3);
console.log(3 > 2 > 1);
Поскольку 1 < 2
оценивается как true
а 3 > 2
- true
, вы в основном делаете:
console.log(true < 3);
console.log(true > 1);
Потому что он интерпретирует слева направо и потому, что он пытается использовать тот же тип.
1 < 2 < 3
становится true < 3
, что, поскольку мы сравниваем числа, бросается в 1 < 3
что является истиной.
3 > 2 > 1
становится true > 1
, что, поскольку мы сравниваем числа, бросается в 1 > 1
что является ложным.
Это потому, что оно оценивается слева направо, что эквивалентно приведенным ниже командам:
console.log(true < 3);
console.log(true > 1);
Оператор "<" и ">" Ассоциативность слева направо
Проверьте ниже ссылку https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
console.log(1 <2 <3) ==> console.log(true <3) ==> (true означает 1) => console.log(1 <3); Ответ верен
console.log(3> 2> 1) ==> console.log(true> 1) ==> (true означает 1) => console.log(1> 1); Ответ неверен
console.log(3> 2> = 1) ==> console.log(true> = 1) ==> (true означает 1) => console.log(1 = 1); Ответ верен
Компилятор будет читать как этот $console.log((1 < 2) < 3)
и $ console.log(( 3>2 ) > 1)
в первом случае: $ console.log(1 < 2 < 3)
первый компилятор выполняет 1 <2, который возвращает 1 (true), после чего он выглядит как 1 <3, который снова равен 1 (true). следовательно, в целом это правда.
выполните вторую с той же логикой, это даст вам ложь.