JavaScriptでは、isNaN(Infinity)
は、Infinityが数値であるかのようにfalseを返します。しかし、それは数ではない数学的な無限大であったかのように無限にいくつかの算術演算の振る舞い:だからなぜInfinityは数字ですか?
、なぜisNaN(Infinity)
リターンは本当でしょうか?それはits value defaults to a Number object?
JavaScriptでは、isNaN(Infinity)
は、Infinityが数値であるかのようにfalseを返します。しかし、それは数ではない数学的な無限大であったかのように無限にいくつかの算術演算の振る舞い:だからなぜInfinityは数字ですか?
、なぜisNaN(Infinity)
リターンは本当でしょうか?それはits value defaults to a Number object?
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の値と等しいかどうかを調べるだけです。何かが数字でないかどうかを確認するチェックではありません。無限大!= NaN。 – ManoDestra
@JanDvorak 'typeof NaN === 'number''でも' isNaN(NaN)=== true' –