Бесконечность: свойство Infinity в JavaScript

Infinity — это свойство глобального объекта в JavaScript. Другими словами, это глобальная переменная.

Начальное значение Infinity равно Number.POSITIVE_INFINITY, что больше, чем другие конечные числа.

JavaScript также имеет отрицательную Infinity( -Infinity ), где его значение равно Number.NEGATIVE_INFINITY. -Infinity меньше любого конечного числа.

Тип свойства — number :

const result = typeof(Infinity);

console.log(result); // number

Проверка на бесконечность

JavaScript предоставляет Number.isFinite(), которая проверяет, является ли значение конечным:

Number.isFinite(value);

Он возвращает true, если value конечно; Если value бесконечно, Number.isFinite() возвращает false.

console.log(Number.isFinite(100)); // true
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(-Infinity)); // false

Кроме того, вы можете сравнить значение с Infinity следующим образом:

let counter = 100;
console.log(counter === Infinity); // false

И бесконечное число равно другому бесконечному числу:

console.log(Infinity === Infinity);
 // true

«Подводные камни»

1) Функция parseFloat()

Предположим, у вас есть форма, которая собирает информацию о пользователе. В форме у вас есть поле, которое позволяет пользователям вводить свой вес.

Поскольку значение поля формы является строкой, вам необходимо преобразовать его в число:

let weight = parseInt('120kg');
console.log(weight); // 120

Этот пример работает корректно. Если пользователи вводят строку, которую нельзя преобразовать в число, parseInt() возвращает NaN :

let weight = parseInt('More than 100kg');
console.log(weight); // NaN

Если входная строка Infinity, parseInt() также возвращает NaN, поскольку не распознает бесконечное число:

let weight = parseInt('Infinity');
console.log(weight); // NaN

Но если вы используете parseFloat() следующим образом:

let weight = parseFloat('Infinity');
console.log(weight); // Infinity

parseFloat() распознает Infinity и возвращает бесконечное число.

Поэтому рекомендуется выдавать ошибку проверки, когда поле ввода содержит строку ‘Infinity’.

2) Сериализация JSON

JSON.stringify() сериализует бесконечное число в null. Например:

const resource = {
    amount: Infinity
};
let result = JSON.stringify(resource);

console.log(result);

Выход:

{"amount":null}

3) Математические методы

Некоторые математические функции возвращают бесконечное число.

Следующий Math.min() возвращает наименьшие числа в массиве ratings :

let ratings = [1, 2, 3, 4, 5];

let max = Math.min(...ratings);
console.log(max); // 1

Однако, когда массив ratings пуст, метод Math.min() возвращает Infinity :

let ratings = [1, 2, 3, 4, 5];

// 
somewhere in the code 
ratings = []; // empty array
//

let max = Math.min(...ratings);
console.log(max); // Infinity

Заключение

  • Infinity в JavaScript представляет собой бесконечное число. Это глобальная переменная, значение которой равно данное свойство.
  • Infinity больше любого конечного числа, а -Infinity меньше любого конечного числа.
  • parseFloat('Infinity') возвращает свойство.
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript