Вопрос Логические операторы && и || JavaScript

Регистрация
27 Май 2013
Сообщения
84
Репутация
-1
Спасибо
0
Монет
0
Почему выражение в JS

let bnm = [1,2,3,4,5,6,7,8,9,10,11,12,13]

for(var i = 0 ; i < bnm.length; i++) {

if (bnm > 3 && bnm < 10) {console.log(bnm)}

} // работает



а такое же выражение но с оператором || выдает все цифры в массиве



let bnm = [1,2,3,4,5,6,7,8,9,10,11,12,13]

for(var i = 0 ; i < bnm.length; i++) {

if (bnm > 3 || bnm < 10) {console.log(bnm)}

}
 
Потому что любое число всегда или больше 2, или меньше 10 (или и то и то). Например 0 не больше 2, но меньше 10, поэтому условие всегда сработает. Знак ИЛИ требует истинности лишь одного операнда, а если будет И, тогда оба операнда должны быть истинны.
 
Потому что операторы && и || это не одно и тоже, они работают по разному, и поэтому результат разный.

Результат оператора && при разных операндах таков:
true && true = true;
true && false = false;
false && true = false;
false && false = false;

Итого: Оператор && возвращает true если оба операнда являются true-значениями, в других случаях это false.

Результат оператора || при разных операндах таков:
true || true = true;
true || false = true;
false || true = true;
false || false = false;

Итого: Оператор || возвращает true если хотя бы оба один из операндов являются true-значениями, в других случаях это false.

Из-за того что эти операторы работают по разному, получается и разный результат.
 
все верно..
a=1;
if (a > 3 || a < 10) {console.log(a);} выведет а, так как первый не сработает, так как a&lt;3, а второе сработает так как a&lt;10
 
Назад
Сверху