Причины isNaN(Infinity)
возвращается false
не имеет ничего общего с математическими тонкостями, это просто потому, что его реализация равно это:
function isNaN(object) {
var coerced = +object;
return coerced !== coerced;
}
Другими словами, принуждает вход в Number
. Если значение принудительного ввода определяется как NaN
(путем проверки, если оно не является строго равным самому себе), то оно возвращает true
. В противном случае он возвращает false
.
[Infinity, null, undefined, true, new Date(), {}, [], [1], [1,2,3], 'blah', '4'].forEach(function (object) {
console.log('object: ' + (typeof object !== 'number' ? JSON.stringify(object) : object));
console.log('coerced: ' + (+object));
console.log('isNaN: ' + isNaN(object));
console.log('==================');
});
Бесконечность число ... Также NaN это число, то оно просто не равно сама. –
Функция IsNaN просто проверяет, соответствует ли значение значению «NaN». Это не проверка, если что-то не число. Infinity! = NaN. – ManoDestra
@JanDvorak 'typeof NaN === 'number'', но' isNaN (NaN) === true' –