Продолжая подход @ Crescent Fresh , некоторое время назад мне пришлось провести проверку чисел, но мне нужно было проверить, содержит ли переменная число, не зная ее типа, это может быть String
содержащий числовое значение, как в данном случае, (я должен был учитывать также экспоненциальную запись и т. д.), объект Number
, в основном все, что я не мог сделать в предположении типа.
И я должен был позаботиться о неявном преобразовании типов, например, когда я указал на @Crescent, isNaN
было недостаточно для моего случая:
// string values
!isNaN(' ') == true;
!isNaN('\t\t') == true;
!isNaN('') == true;
// boolean values
!isNaN(true) == true;
!isNaN(false) == true;
// etc..
В итоге я написал набор 30 + модульных тестов , которые вы можете найти и запустить здесь , и следующая функция, которая проходит все мои тесты:
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}