Это действительно тревожит. Вот массив значений, которые я протестировал:
var x = [undefined, NaN, 'blah', 0/0, null, 0, '0', 1, 1/0, -1/0, Number(5)]
Оценивает (в консоли Firebug):
,NaN,blah,NaN,,0,0,1,Infinity,-Infinity,5
Когда я звоню x.map(isNaN)
(чтобы вызвать isNaN для каждого значения), я получаю:
true,true,true,true,false,false,false,false,false,false,false
В заключение, isNaN
выглядит довольно бесполезно! ( Редактировать : за исключением того, что оказывается, что isNaN является только определенным над номером, в этом случае он работает просто отлично - только с вводящим в заблуждение именем.)
Кстати, вот типы этих значений:
x.map(function(n){return typeof n})
-> undefined,number,string,number,object,number,string,number,number,number,number