← Назад к вопросам

Что такое функция Number?

1.7 Middle🔥 191 комментариев
#JavaScript Core

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Функция 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, false0.
  • 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;
}

Важные нюансы

  1. Number() vs унарный плюс: +value работает аналогично Number(value), но короче
  2. Сравнение с parseInt/parseFloat: Number() строже — требует, чтобы вся строка была числом
  3. Производительность: В большинстве случаев унарный плюс работает быстрее, чем Number()

Функция Number является фундаментальной частью системы типов JavaScript, обеспечивая надежные механизмы для преобразования и проверки числовых значений, что критически важно для корректной работы математических операций и вычислений в веб-приложениях.

Что такое функция Number? | PrepBro