Не работает код в switch case
При вводе в prompt Строчного значения должно выводится (' number is Ba_NaN') При вводе Числа должно выводится ('OK!') Проблема в том что при вводе строчного значения в prompt не выводится console.log(' number is Ba_NaN') Нужно реализовать строго на switch case
let numOrStr = prompt('input number or string');
console.log(numOrStr)
switch (numOrStr) { // numOrStr === null //
case null : {
console.log('вы отменили')
break;
}
case '' : { // numOrStr.trim() === '' //
console.log('Empty String');
break;
}
case isNaN( +numOrStr ) : { // isNaN( +numOrStr ) //
console.log(' number is Ba_NaN')
break;
}
default: {
console.log('OK!')
}
}
Ответы (2 шт):
numOrStr - это строка.
case в конструкции switch/case ожидает, что результат сравнения подаваемого значения в switch() и значения в case даст true, что они равны. Что в текущем случае явно не возможно, т.к. строка явно не равна результату работы метода isNaN (получается сравнение строка === isNaN(+строка)). Получается на вход надо подавать не переменную numOrStr, а булево значение true
P.S. первый case в любом случае будет бесполезным, а во-втором случае придётся писать numOrStr === ''
Как то так ?
let numOrStr = prompt('input number or string');
console.log(numOrStr)
switch (true) {
case (numOrStr === null):
console.log('ви скасували')
break
case (numOrStr.trim() === ''):
console.log('Empty String')
break
case isNaN( +numOrStr):
console.log(' number is Ba_NaN')
break
default:
console.log('OK!')
}