@MorUtor

Можно ли использовать две переменные в switch case?

Я не понимаю, почему после приема переменных идет сразу дефолт:

let a = prompt('Type number A')
let b = prompt('Type number B')

switch (a,b) {
    case a>b:
        alert(a+b)
        break;
    case a<b:
        alert('Lorem Ipsum terebismum')
        break;
    default:
        alert('Isn"nt number')
        break;
}
  • Вопрос задан
  • 300 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для начала, a,b - операция "запятая", её результат равен последнему операнду, то есть b.
Затем вы сравниваете b с результатами операций a>b и a<b. Поскольку в b строка, а операции дают true или false, то, соответственно, сравнения не проходят и отрабатывает ветка default.
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Это делается так:

switch (true) {
    case a > b:
        alert(a + b)
        break;
    case a < b:
        alert('Lorem Ipsum terebismum')
        break;
    default:
        alert('Isn"nt number')
        break;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
У true программистов всегда было много вопросов к switch (как в свое время к go to). Поэтому в любой непонятной ситуации используйте цепочку if else, так вы будите ближе к строгим стандартам.
if(a > b) {
  alert(a + b)
} else if(a < b) {
    alert('Lorem Ipsum terebismum')
} else {
    alert('Isn"nt number')
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы