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')
возвращает свойство.