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

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

Регистрация
27 Май 2013
Сообщения
86
Репутация
-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)}

}
 
Регистрация
30 Май 2013
Сообщения
92
Репутация
-3
Спасибо
0
Монет
0
Потому что любое число всегда или больше 2, или меньше 10 (или и то и то). Например 0 не больше 2, но меньше 10, поэтому условие всегда сработает. Знак ИЛИ требует истинности лишь одного операнда, а если будет И, тогда оба операнда должны быть истинны.
 
Регистрация
20 Дек 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
Потому что операторы && и || это не одно и тоже, они работают по разному, и поэтому результат разный.

Результат оператора && при разных операндах таков:
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.

Из-за того что эти операторы работают по разному, получается и разный результат.
 
Сверху Снизу