Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Функция Number в JavaScript
Функция Number — это глобальный объект-конструктор в JavaScript, который выполняет двойную роль: преобразует значения в числовой тип (Number) и предоставляет свойства и методы для работы с числами.
Двойная роль Number
1. Как функция-конвертер (преобразование типов):
Когда Number() вызывается как функция (не через new), она преобразует переданное значение в число примитивного типа.
// Примеры преобразования различных типов
console.log(Number("42")); // 42
console.log(Number("42.5")); // 42.5
console.log(Number("42px")); // NaN (Not a Number)
console.log(Number(true)); // 1
console.log(Number(false)); // 0
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
console.log(Number([])); // 0 (пустой массив)
console.log(Number([5])); // 5 (массив с одним числом)
console.log(Number([1, 2])); // NaN (массив с несколькими элементами)
2. Как конструктор (создание объектов):
При использовании с оператором new, создает объект-обертку Number, что на практике используется редко.
const numObj = new Number(42);
console.log(typeof numObj); // "object"
console.log(numObj.valueOf()); // 42 (получаем примитивное значение)
Ключевые особенности преобразования
- Строковое преобразование:
Number()пытается распарсить всю строку как число. Если это невозможно — возвращаетNaN. - Логические значения:
trueстановится1,false—0. nullиundefined:nullпреобразуется в0,undefined— вNaN.- Пустые строки и пробелы: Пустая строка или строка только с пробелами становится
0.
// Сравнение с parseInt/parseFloat
console.log(Number("42px")); // NaN
console.log(parseInt("42px")); // 42 (останавливается на первом нечисловом символе)
console.log(parseFloat("42.5px")); // 42.5
Статические свойства Number
Объект Number содержит важные константы как свойства:
// Максимальные и минимальные значения
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
console.log(Number.MIN_VALUE); // 5e-324 (наименьшее положительное число)
console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991
console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991
// Специальные числовые значения
console.log(Number.POSITIVE_INFINITY); // Infinity
console.log(Number.NEGATIVE_INFINITY); // -Infinity
console.log(Number.NaN); // NaN
// Эпсилон (разница между 1 и наименьшим числом > 1)
console.log(Number.EPSILON); // 2.220446049250313e-16
Статические методы Number
Number.isNaN(value)— улучшенная проверка на NaN (не выполняет приведения типа)Number.isFinite(value)— проверяет, является ли число конечнымNumber.isInteger(value)— проверяет, является ли значение целым числомNumber.isSafeInteger(value)— проверяет, находится ли число в безопасном диапазонеNumber.parseFloat()иNumber.parseInt()— аналоги глобальных функций, но явно связанные с Number
// Сравнение глобального isNaN и Number.isNaN
console.log(isNaN("текст")); // true (приводит "текст" к NaN)
console.log(Number.isNaN("текст")); // false (строка не NaN)
// Проверка безопасных целых чисел
console.log(Number.isSafeInteger(42)); // true
console.log(Number.isSafeInteger(9007199254740992)); // false (выходит за пределы)
Практическое применение
Когда использовать Number():
- Когда нужно строгое преобразование в число, где нечисловые символы недопустимы
- Для явного приведения типов в функциях и расчетах
- При валидации числовых входных данных
// Практический пример: валидация и преобразование ввода
function calculatePrice(quantity, pricePerUnit) {
const qty = Number(quantity);
const price = Number(pricePerUnit);
if (isNaN(qty) || isNaN(price)) {
throw new Error("Некорректные числовые значения");
}
if (!Number.isFinite(qty * price)) {
throw new Error("Результат выходит за допустимые пределы");
}
return qty * price;
}
Важные нюансы
Number()vs унарный плюс:+valueработает аналогичноNumber(value), но короче- Сравнение с
parseInt/parseFloat:Number()строже — требует, чтобы вся строка была числом - Производительность: В большинстве случаев унарный плюс работает быстрее, чем
Number()
Функция Number является фундаментальной частью системы типов JavaScript, обеспечивая надежные механизмы для преобразования и проверки числовых значений, что критически важно для корректной работы математических операций и вычислений в веб-приложениях.