JavaScript: Infinity и NaN
Infinity
В JavaScript имеется предопределённая глобальная переменная Infinity
. Она хранит специальное значение обозначающее бесконечность – Infinity
. Эта переменная доступна только для чтения.
Значение Infinity
можно получить:
- В результате деления числа на 0.
- Если результат вычислений, не попадает в допустимый диапазон чисел JavaScript. Любое отрицательное число, которое не может быть представлено, считается отрицательной бесконечностью (
-Infinity
), а положительное – положительной бесконечностью (Infinity
).
alert(123 / 0); // Infinity alert(-12345 / 0); // -Infinity alert(1e500); // Infinity alert(1 - 1e500); // -InfinityПопробовать »
Если вычисление возвращает одну из бесконечностей, это значение не может использоваться ни в каких дальнейших вычислениях, потому что значение Infinity
не имеет числового представления и любая арифметическая операция с бесконечностью всегда возвращает бесконечность:
alert(20 + Infinity); // Infinity
NaN
Также, в JavaScript имеется предопределённая глобальная переменная NaN
. Она хранит специальное значение NaN
(NaN сокращение от англ. Not a Number – не число). Эта переменная доступна только для чтения.
Значение NaN
используется для обозначения математической ошибки, которая возникает в том случае, если математическая операция не может быть совершена:
var a = 10, b = "текст"; document.write(a - b); // Операнд не может быть преобразован в число document.write(0 / 0); // Деление нуля на нульПопробовать »
Значение NaN
обладает одной особенностью: оно не равно никакому значению, в том числе и другому NaN
:
NaN == NaN // false
Чтобы определить, является ли значение переменной значением NaN
следует выполнить проверку на неравенство x != x
. Эта проверка вернёт true
тогда и только тогда, когда x
имеет значение NaN
:
var x = NaN; alert(x != x); // true
Если вычисление возвращает значение NaN
, это значение не может использоваться ни в каких дальнейших вычислениях, потому что значение NaN
не имеет числового представления и любая арифметическая операция с NaN
всегда возвращает NaN
:
var num = NaN / 10; // NaN
С этой темой смотрят: