JavaScript

В чем ошибка кода?

выполнил задание и проверяющий ответил, что избыточное преобразование к числу почти в каждом if, может его преобразовать один раз? Что он имел ввиду? ЗЫ он уехал и не успел ответить

var x = parseInt(prompt('Введите целое число в диапазоне 0 - 9'))

if (x === '') {
alert('Пустая строка');
} else if (x === null) {
alert('Вы нажали "Отмена"');
} else if (+x === 0) {
alert("Ноль");
} else if (+x === 1) {
alert("Один");
} else if (+x === 2) {
alert("Два");
} else if (+x === 3) {
alert("Три");
} else if (+x === 4) {
alert("Четыре");
} else if (+x === 5) {
alert("Пять");
} else if (+x === 6) {
alert("Шесть");
} else if (+x === 7) {
alert("Семь");
} else if (+x === 8) {
alert("Восемь");
} else if (+x === 9) {
alert("Девять");
}
else {
alert('Введите число в диапазоне')
}
Doston Abduraimov
Doston Abduraimov
23
parseInt преобразует данные из prompt в целое число (в данном коде по основанию 10), поэтому в проверках ставить + переде переменной х не имеет смысла.

P.S. else if (x === null) - никогда не выполнится
Александр Русинов Т.+79267688554
Александр Русинов Т.+79267688554
17 123
Лучший ответ
Я тебе уже несколько вариантов в прошлом собщении написал здесь у тебя ошибка сделай так и вё заработает

x = prompt('Введите целое число в диапазоне 0 - 9');

if (x == '') {
alert('Пустая строка');
} else if (x == null) {
alert('Вы нажали "Отмена"');
} else if (+x == 0) {
alert("Ноль");
} else if (+x == 1) {
alert("Один");
} else if (+x == 2) {
alert("Два");
} else if (+x == 3) {
alert("Три");
} else if (+x == 4) {
alert("Четыре");
} else if (+x == 5) {
alert("Пять");
} else if (+x == 6) {
alert("Шесть");
} else if (+x == 7) {
alert("Семь");
} else if (+x == 8) {
alert("Восемь");
} else if (+x == 9) {
alert("Девять");
}
else {
alert('Введите число в диапазоне')
}

Бахчан Дьяров
Бахчан Дьяров
60 557
Бахчан Дьяров А вот так порекольней да покороче

while(!(''+prompt('Введите целое число в диапазоне 0 - 9')).replace(/^\d$/,a=>(alert("Ноль, Один, Два, Три, Четыре, Пять, Шесть, Семь, Восемь, Девять".split(',')[a]),a)).replace(/null/,a=>(alert('Вы нажали кнопку отмена!'),0)).match(/^\d$/)&&(alert('Попробуй ещё раз!'),1));

Решение:
const NUM_STR = ['Ноль', 'Один', 'Два', 'Три', 'Четыре', 'Пять', 'Шесть', 'Семь', 'Восемь', 'Девять'];

var x = prompt('Введите целое число в диапазоне 0 - 9');
switch (x) {
 case '' : alert('Пустая строка'); break;
 case null: alert('Вы нажали "Отмена"'); break;
 default:
  if (x.length === 1 && x >= '0' && x <= '9')
   alert(NUM_STR[+x]);
  else
   alert('Введите число в диапазоне');
}
_
Ошибка всего одна: само написание данного кода его автором было ошибкой, при незнании типов данных и синтаксиса JavaScript... Когда хотят научиться, сначала изучают принципы программирования, затем язык, и только затем пишут код - порядок именно такой, НЕ НАОБОРОТ.
А зачем вообще писать +1, +2 и т. д?
Это не нужно, пишите просто числа, уберите все "+" без исключения
Бахчан Дьяров +x так происходит преобразование типов данных
пока просто x без плюса он String
когда ставишь плюс он уже Number
ели вам всё ровно какой тип даных то программ не всё равно И не обижайтесь тогда почему что то не срабатывает вопреки здравому смыслу