Взгляните на это решение:
function isNumber(n) { return !isNaN(parseFloat(n)) && isFinite(n); }
Эта короткая функция возвращает значение true, если n имеет вид десятичного числа не зависимо от его типа. Это может быть как объект Number, так и строка, содержащая числовое значение. Кроме всех Ваших вариантов это значение также может иметь экспоненциальный формат, например isNumber(»5e8») вернёт true, так что будьте осторожны! Фактически, в эту функцию можно передать всё, что угодно, только учитывайте корреляцию типов (Например, хотя 1==true, но ведь true не является числом).