Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Является ли переменная числом? О проверке.. (https://javascript.ru/forum/misc/76166-yavlyaetsya-li-peremennaya-chislom-o-proverke.html)

hoz 10.12.2018 18:20

Является ли переменная числом? О проверке..
 
Очередной раз попалась проверка, которая возвращает факт, является ли переменная числом.
Вот её код:
function isNumeric(n) {
  return !isNaN(parseFloat(n)) && isFinite(n)
}

Возник вопрос. Почему используется именно функция parseFloat(n)? Есть же parseInt(). Я не в курсах, какие у них реализации, но думаю, что последний вариант будет работать быстрее т.к. не проверяется десятичная часть числа..
И вообще, на самом деле до сих пор не придумали никаких других средств для этой проверки?

j0hnik 11.12.2018 01:35

hoz,
если у числа будет дробная часть, parseFloat будет в разы быстрее (-1 операция) если число целое оба метода по скорости примерно равны.
В данной задаче проверяется объект со свойствами применимыми к узлу ДОМ которые как бы помимо числа могут содержать %. px итд поэтому такой подход. А по скорости все эти методы сильно уступают неявному преобразованию
console.log(+'5')
но если в стоке будет что то кроме чисел и десятичной точки, вернется NaN.

j0hnik 11.12.2018 01:37

есть отличный сервис в котором можно погонять код на скорость если интересно
https://jsperf.com/


Часовой пояс GMT +3, время: 14:46.