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