В JavaScript имеются предопределённые глобальные переменные Infinity и NaN. Переменная Infinity хранит специальное значение обозначающее бесконечность - Infinity, переменная NaN также хранит специальное значение NaN (NaN сокращение от англ. Not a Number - не число). По стандарту ECMAScript 5, эти переменные доступны только для чтения.
Значение бесконечности можно получить к примеру в результате деления числа на 0
alert(123 / 0); // Infinity
При делении отрицательного числа на 0, получится минус бесконечность –Infinity
alert(-12345 / 0); // -Infinity
Если результат арифметической операции окажется больше самого большого допустимого положительного значения, возвращается специальное значение Infinity. Если абсолютное значение отрицательного результата окажется больше допустимого отрицательного значения, возвращается отрицательная бесконечность (-Infinity)
alert( 1e500 ); // Infinity
alert( 1 - 1e500 ); // -Infinity
Увидеть максимальное и минимальное допустимое число можно с помощью констант Number.MAX_VALUE и Number.MIN_VALUE соответственно.
document.write(Number.MAX_VALUE + "<br>");
document.write(Number.MIN_VALUE);
Значение NaN используется для обозначения математической ошибки, она возникает в том случае, если математическая операция не может быть совершена
var a = 10, b = "текст";
document.write(a - b); // математическая операция не с числовым аргументом
document.write(0 / 0); // деление нуля на нуль
Значение NaN обладает одной особенностью: операция проверки равенства всегда возвращает отрицательный результат, даже если сравнивать его с самим собой. Это значит, что нельзя использовать проверку x == NaN, чтобы определить, является ли значение переменной x значением NaN. Вместо этого следует выполнить проверку x != x. Эта проверка вернет true тогда и только тогда, когда x имеет значение NaN. Аналогичную проверку можно выполнить с помощью функции isNaN(). Она возвращает true, если аргумент имеет значение NaN или если аргумент является нечисловым значением.