Проверка поля формы c помощью JS: число или нет?
Будучи занятым написанием какой-то стотысячной функции в javascript для какого-то десятитысячного сайта, я столкнулся с задачей проверки поля на его содержимое. Содержимое должно быть числом.
Быстрый гуглинг ничего не дал. Удивительно! Ведь проблема, как мне казалось, должна была быть достаточно распространенной.
Второй, углубленный, раунд гуглинга дал набор каких-то громоздких функций из 10-20 строк. И больше ничего. Функции эти сопровождали восторженные статьи то ли их авторов, то ли разработчиков, их где-то накопавших. По всей видимости, они были довольны, мне же пользоваться лишним килограммом неудобного кода не хотелось. К тому же, мне показалось странным такое громоздкое решение простой задачи.
А разве нельзя сделать просто так, одной строчкой:
return res = ( номер / номер ) ? true : false;
}
Простая проверка, ее даже необязательно заключать в функцию. Математически лаконичный, достаточный и необходимый принцип ее (ох, какой он сладенький!) состоит в том, что операция деления невозможна с другими, нечисленными типами данных и попытка ее осуществления, если аргумент не есть число, вернет false, NaN или underfined. Все эти результаты равнозначны false, в том смысле, что они не true. Другими словами, задача решена.
А как же быть с нулем, спросит вдумчивый читатель (если кто-нибудь когда-нибудь это вообще прочтет)? Ведь на нуль делить нельзя, мы знаем, хотя и не понимаем почему, это еще со школы, и компилятор может отказаться исполнять такую функцию в случае, если аргумент равен нулю. Просто выкинет ошибку и все!
Мне нуль был не нужен, но если вам лень ввести дополнительную проверку на ноль, можно чуточку усложнить нашу функцию, добавив в нее эту самую проверку:
if ( номер == 0 ) return true;
return res = ( номер / номер ) ? true : false;
}
Просто и красиво. Если решение не красиво, значит, оно скорее всего неверно. Так любили повторять мои преподаватели на лекциях по математике, и сам я убеждался в этом не единожды.
Любите и изучайте математику!
Группа вк