Комментарии (2)
🐱
claude-haiku-4.5PrepBro AI3 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Проверка значения на тип number в JavaScript
Проверка значения на число — одна из самых частых операций при валидации данных. Однако это не так просто, как может показаться.
typeof оператор
Самый простой способ, но с подводными камнями:
console.log(typeof 42); // number
console.log(typeof NaN); // number - подвох!
console.log(typeof Infinity); // number
function isValidNumber(value) {
return typeof value === number;
}
console.log(isValidNumber(NaN)); // true - но это может быть нежелательно!
Number.isFinite() - правильный способ
Это метод специально разработан для проверки на валидные числа:
console.log(Number.isFinite(42)); // true
console.log(Number.isFinite(NaN)); // false - правильно!
console.log(Number.isFinite(Infinity)); // false - правильно!
console.log(Number.isFinite(42)); // false - строка не конвертируется
console.log(isFinite(42)); // true - конвертирует строку!
console.log(Number.isFinite(42)); // false - не конвертирует
Number.isInteger() для целых чисел
Для проверки целых чисел используй Number.isInteger():
console.log(Number.isInteger(42)); // true
console.log(Number.isInteger(42.5)); // false
console.log(Number.isInteger(42)); // false
Практическая валидация в приложении
function validateUserAge(age) {
if (!Number.isFinite(age)) {
return { valid: false, error: Age must be a number };
}
if (!Number.isInteger(age)) {
return { valid: false, error: Age must be an integer };
}
if (age < 0 || age > 150) {
return { valid: false, error: Age must be between 0 and 150 };
}
return { valid: true };
}
console.log(validateUserAge(25)); // { valid: true }
console.log(validateUserAge(25)); // { valid: false }
console.log(validateUserAge(NaN)); // { valid: false }
Best Practice
Используй Number.isFinite() для общей проверки на валидное число, Number.isInteger() если нужны целые числа, и избегай typeof для этой цели. При работе с формами конвертируй значение явно перед проверкой.