FirstTime
@FirstTime
Постигающий силу штурмовик.

Как в js через if задать проверку на число?

Только осваиваю Js, хочу написать простенький код:
var year = prompt ('Write a number', '');
if (year == NaN) {
alert ('Нужно писать число!');
} else {
alert ('Вы полностью правы!');
}
Подскажите, как сделать правильно. При выводе окна в браузере и вводе данных пользователем, при написании слова, буквы или ничего, выводило - Нужно писать число!
А при написании любой цифры/числа - Вы полностью правы!

P.S.И еще один вопрос, в prompt обязательно после первой строки (в которой написан вопрос), вставлять пустую, если у тебя нет предложенного сразу ответа или достаточно просто - prompt ('Write a number'); ?
  • Вопрос задан
  • 28274 просмотра
Решения вопроса 1
drugoi
@drugoi
Front-end Developer
var year = prompt('Write a number');
if (year.replace(/\s/g, '').length === 0 || isNaN(year)) {
  alert('Нужно писать число!');
} else {
  alert('Вы полностью правы!');
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
@Lexxby
Мне кажется можно сделать лаконичнее
const year = Number(prompt('Write a number'));
if (isNaN(year)) {
  alert('Нужно писать число!');
} else {
  alert('Вы полностью правы!');
}
Ответ написан
@ArtCodeJs
Искал долго, но лучший вариант через встроенную функцию:
if (isNaN(year)) {...} // true
Ответ написан
Комментировать
gelevanog
@gelevanog
javascript developer
function isNumber(val) {
            // negative or positive
            return /^[-]?\d+$/.test(val);
        }
var check = isNumber(year )
If(check ) {
.....
}
Ответ написан
Комментировать
А зачем использовать регулярку, когда можно просто:
var year = prompt ('Write a number', '');
if ( !parseInt(year) ) {
alert ('Нужно писать число!');
} else {
alert ('Вы полностью правы!');
}
Ответ написан
@aksined_by
Php-developer
Наткнулся на старый вопрос и не смог промолчать, даже если никому уже и не пригодится.
На одной из моих работ было четкое правило "Если можно обойтись без регулярок, то ни в коем случае не используй регулярку."

Поэтому лично я данную проверку реализовал бы вот так:
var isNumber = (typeof(year.length) === 'undefined' || (Number.parseInt(year,10) == year))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
30 апр. 2024, в 23:39
3000 руб./за проект
30 апр. 2024, в 23:32
1500 руб./за проект
30 апр. 2024, в 22:44
500 руб./в час