length
это свойство, а не метод. Вы не можете его назвать, следовательно, вам не нужны скобки ()
:
function getlength(number) {
return number.toString().length;
}
ОБНОВЛЕНИЕ: как обсуждалось в комментариях, приведенный выше пример не будет работать для чисел с плавающей запятой. Для того, чтобы сделать его работать можно либо избавиться от периода с String(number).replace('.', '').length
или подсчитывать цифры с регулярным выражением: String(number).match(/\d/g).length
.
С точки зрения скорости потенциально самый быстрый способ получить количество цифр в данном числе - это сделать это математически. Для положительных целых чисел есть замечательный алгоритм log10
:
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
Для всех типов целых чисел (включая отрицательные) есть блестящее оптимизированное решение от @ Mwr247 , но будьте осторожны с его использованием Math.log10
, так как оно не поддерживается многими устаревшими браузерами. Таким образом, замена Math.log10(x)
на Math.log(x) * Math.LOG10E
решит проблему совместимости.
Создание быстрых математических решений для десятичных чисел будет непросто из-за хорошо известного поведения математики с плавающей запятой , поэтому подход с преобразованием в строку будет более простым и надежным. Как упоминалось в @streetlogics, быстрое приведение может быть выполнено с помощью простого числа в строковую конкатенацию, в результате чего решение для замены будет преобразовано в:
var length = (number + '').replace('.', '').length; // for floats