JavaScript

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

Почему выражение в 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[i] > 3 && bnm[i] < 10) {console.log(bnm[i])}
} // работает

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

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[i] > 3 || bnm[i] < 10) {console.log(bnm[i])}
}
Потому что любое число всегда или больше 2, или меньше 10 (или и то и то). Например 0 не больше 2, но меньше 10, поэтому условие всегда сработает. Знак ИЛИ требует истинности лишь одного операнда, а если будет И, тогда оба операнда должны быть истинны.
Игорь Гуленок
Игорь Гуленок
65 845
Лучший ответ
Андрей Сычев
 let bnmQ = ['100','1000','1233','233','54','64','333'];

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

if (bnmQ[i][0] === '1' || bnmQ[i][0] === '2')
{console.log(bnmQ[i] + ',');}
}

ОКей, но тогда почему тут с о
ператором || все работает а с && нет , там же истина получается , нет ?
все верно..
 a=1;
if (a > 3 || a < 10) {console.log(a);}
выведет а, так как первый не сработает, так как a<3, а второе сработает так как a<10
ON
Ooo Npo
52 202
Т.к. второе условие - это все известные числа.
Нужно изучать булеву алгебру.
Толя Иванов
Толя Иванов
55 095
&& — и.
|| — или.

Ты приходишь на рынок.
— Дайте мне больше двух яблок И ПРИ ЭТОМ меньше десяти.
Тебе дадут 3-9 яблок.

— Дайте мне больше двух яблок ИЛИ меньше десяти (на ваш выбор).
Тебе подгонят 40-тонную фуру («больше двух») ИЛИ дадут 1-9 яблок («меньше десяти»). На усмотрение продавца.
OR
Oleg Rudoy
38 633
Потому что операторы && и || это не одно и тоже, они работают по разному, и поэтому результат разный.

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

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