Логика сравнения JavaScript - пусть a = 1.=== (3 || 1) ложь, почему? - PullRequest
0 голосов
/ 13 июня 2018

Я пытался использовать это утверждение сравнения и был почти уверен, что это сработает, но это не так.Не могли бы вы объяснить, почему?

let a = 1 
a === ( 1 || 3 ) // true 
a === ( 3 || 1 ) // false 

Спасибо за ответы:)

Ответы [ 3 ]

0 голосов
/ 13 июня 2018

Целые числа, такие как 1 и 3 (но не 0), являются истинными в JavaScript.Итак, первое из ваших сравнений возвращает 1, потому что 1 является правдивым и самым левым операндом, а второе возвращает 3, потому что 3 также является правдивым и самым левым операндом.Сравнение прекращается немедленно, когда истинное значение найдено (начиная слева).Итак, при вашем втором сравнении программа даже не смотрит на 1.

0 голосов
/ 13 июня 2018

Я думаю, что вы ищете сравнение на самом деле:

let a = 1 
a === 1 || a === 3  // true
0 голосов
/ 13 июня 2018

Когда вы используете OR сравнение, если любое из крайних левых выражений истинно, все выражение становится истинным.Таким образом,

( 1 || 3 ) выберет 1, поскольку 1 - это определенное значение с левой стороны, и когда вы сделаете a === ( 1 || 3 ), оно будет true, так как a === 1 равно true,учитывая, что a = 1.

let a = 1;
let rightCondition = ( 1 || 3 );
//this will give 1
console.log(rightCondition);
console.log(a === rightCondition);

Но, ( 3 || 1 ) выберет 3, так как 3 - это определенное значение с левой стороны, а когда вы сделаете a === ( 3 || 1 ), это будет falseкак a === 3 равно false, учитывая, что a = 1.

let a = 1;
let rightCondition = ( 3 || 1 );
//this will give 3
console.log(rightCondition);
console.log(a === rightCondition);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...