Почему count равно 5?
Когда card === 2, 3, 4, 5, 6 к count надо прибавить +1
Когда card === 7, 8 , 9 к count = 0
Когда card === 10, 'J', 'Q', 'K', 'A' - count - 1
Как правильно решить задачу?
var count = 0;
function cc(card) {
if (card === 2 || 3 || 4 || 5 || 6) {
count++;
} else if (card === 10 || "J" || "Q" || "K" || "A") {
count--;
}
}
cc(2);
cc(3);
cc(7);
cc('K');
cc('A');
console.log(count);
Потому что вы неправильно сделали сравнение. Дело в том, что ваше выражение эквивалентно if (card === 2 || true || true || true || true ) что эквивалентно if(true). Так как 3,4,5,6 при логических операциях это true.
То есть у вас всегда срабатывал первый блок if.
Правильная версия кода:
var count = 0;
function cc(card) {
if (card === 2 || card === 3 || card === 4 || card === 5 || card === 6) {
count++;
} else if (card === 10 || card === "J" || card === "Q" || card === "K" || card === "A") {
count--;
}
}
cc(2);
cc(3);
cc(7);
cc('K');
cc('A');
console.log(count);
Потому, что все что не 0 - это true. Условия нужно записывать полностью
var count = 0;
function cc(card) {
if (
card === 2 ||
card === 3 ||
card === 4 ||
card === 5 ||
card === 6
) {
count++;
} else if (
card === 10 ||
card === "J" ||
card === "Q" ||
card === "K" ||
card === "A"
) {
count--;
}
}
cc(2);
cc(3);
cc(7);
cc('K');
cc('A');
console.log(count);
card === 2 || 3 || 4 || 5 || 6 - это работать у вас не будет, так как если в card === 2 вы получите false, то потом при любых раскладах false || 3 будет выдавать true, так как !!3 === true
var count = 0;
function cc(card) {
if ([2, 3, 4, 5, 6].indexOf(card) >= 0){
count ++;
} else if([10, "J", "Q", "K", "A"].indexOf(card) >= 0){
count --;
}
}
cc(2); cc(3); cc(7); cc('K'); cc('A');
console.log(count);
тоже самое, просто наглядный вариант
var count = 0;
function cc(card) {
switch (card){
case 2:
case 3:
case 4:
case 5:
case 6:
count++;
break;
case 10:
case "J":
case "Q":
case "K":
case "A":
count--;
break;
}
}
cc(2);
cc(3);
cc(7);
cc('K');
cc('A');
console.log(count);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости