Der Grund isNaN(Infinity)
kehrt false
nichts mit mathematischen technischen zu tun hat, ist es einfach, weil ihre Umsetzung ist dies gleich:
function isNaN(object) {
var coerced = +object;
return coerced !== coerced;
}
Mit anderen Worten, zwingt er den Eingang zu einem Number
. Wenn der erzwungene Wert als NaN
ermittelt wird (indem überprüft wird, ob er nicht exakt mit sich selbst übereinstimmt), wird true
zurückgegeben. Andernfalls gibt es false
zurück.
[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('==================');
});
Unendlichkeit ist eine Zahl ... Auch ein NaN eine Zahl ist, es tut sich einfach nicht gleich. –
Die IsNaN-Funktion prüft lediglich, ob ein Wert dem Wert "NaN" entspricht. Es ist kein Check, ob etwas nicht eine Nummer ist. Unendlichkeit! = NaN. – ManoDestra
@JanDvorak 'typeof NaN === 'number''aber' isNaN (NaN) === true' –