Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Бесконечность и значение NaN
Деление числа на 0
приведет к значению плюс или минус Infinity
(бесконечность), а деление числа 0.0
на 0
— к значению NaN
(нет числа):
console.log( 10 / 0 ); // Infinity
console.log( -10 / 0 ); // -Infinity
console.log( 0 / 0 ); // NaN
Присвоить эти значения можно также с помощью глобальных свойств Infinity
и NaN
или свойств POSITIVE_INFINITY
, NEGATIVE_INFINITY
и NaN
из класса Number
:
console.log( Infinity ); // Infinity
console.log( -Infinity ); // -Infinity
console.log( NaN ); // NaN
console.log(Number.POSITIVE_INFINITY); // Infinity
console.log(Number.NEGATIVE_INFINITY); // -Infinity
console.log(Number.NaN); // NaN
Любая операция значения Infinity
с числом даст в результате Infinity
:
console.log( Infinity - 5 ); // Infinity
Любая операция со значением NaN
даст в результате NaN
:
console.log( NaN + 5 ); // NaN
При сравнении значение NaN
не равно даже самому себе:
console.log( NaN == NaN ); // false
console.log( NaN === NaN ); // false
Для проверки соответствия этим значениям следует воспользоваться следующими глобальными функциями:
isFinite(<Значение>)
— возвращаетtrue
, если значение не равно плюс или минус бесконечность или значениюNaN
, иfalse
в противном случае;isNaN(<Значение>)
— возвращаетtrue
, если значение равноNaN
, иfalse
в противном случае. Пример:
let x = 10.0 / 0, y = 0.0 / 0, z = 5;
console.log( x + ' ' + y + ' ' + z ); // Infinity NaN 5
console.log( Number.isNaN(x) ); // false
console.log( Number.isNaN(y) ); // true
console.log( Number.isNaN(z) ); // false
console.log( Number.isFinite(x) ); // false
console.log( Number.isFinite(y) ); // false
console.log( Number.isFinite(z) ); // true
Выполнить сравнение со значением NaN
позволяет также статический метод is(<Значение 1>, <Значение 2>)
из класса Object
:
console.log( Object.is(x, NaN) ); // false
console.log( Object.is(y, NaN) ); // true
console.log( Object.is(z, NaN) ); // false
Можно также воспользоваться статическими методами isFinite()
и isNaN()
из класса Number
(см. разд. 5.2):
let x = 10.0 / 0, y = 0.0 / 0, z = 5;
console.log( Number.isNaN(y) ); // true
console.log( Number.isFinite(x) ); // false
console.log( Number.isFinite(z) ); // true
Обратите внимание: в отличие от глобальных функций isFinite()
и isNaN()
, методы isFinite()
и isNaN()
из класса Number
автоматически не преобразует указанное значение в число:
console.log( Number.isFinite('0') ); // false
console.log( isFinite('0') ); // true
console.log( Number.isNaN('str') ); // false
console.log( isNaN('str') ); // true
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов