Да сбили меня этими Infinity
Вообще вырисовывался такой вариант:
var a = NaN;
var b = 1;
var c = {};
var d = Infinity;
function isNumber(x) {
return ! isNaN(x * 1);
}
alert([isNumber(a), isNumber(b), isNumber(c), isNumber(d)]);
тут isNumber(Infinity) выдает true.
В итоге мы пришли к реализации функционала встроенной функции isFinite.