lengthjest właściwością, a nie metodą. Nie możesz tego nazwać, więc nie potrzebujesz nawiasów ():
function getlength(number) {
return number.toString().length;
}
AKTUALIZACJA: Jak omówiono w komentarzach, powyższy przykład nie będzie działał dla liczb zmiennoprzecinkowych. Aby uczynić go pracy możemy albo pozbyć okres z String(number).replace('.', '').length, lub liczyć cyfry z wyrażenia regularnego: String(number).match(/\d/g).length.
Pod względem szybkości, potencjalnie najszybszym sposobem uzyskania liczby cyfr w podanej liczbie jest zrobienie tego matematycznie. Dla dodatnich liczb całkowitych istnieje wspaniały algorytm z log10:
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
Dla wszystkich typów liczb całkowitych (w tym ujemnych) istnieje doskonałe, zoptymalizowane rozwiązanie od @ Mwr247 , ale należy zachować ostrożność Math.log10, ponieważ nie jest obsługiwane przez wiele starszych przeglądarek. Więc wymianie Math.log10(x)z Math.log(x) * Math.LOG10Erozwiąże problem ze zgodnością.
Tworzenie szybkich rozwiązań matematycznych dla liczb dziesiętnych nie będzie łatwe ze względu na dobrze znane zachowanie matematyki zmiennoprzecinkowej , więc podejście rzutowania na łańcuch będzie łatwiejsze i bardziej głupie. Jak wspomniano przez @streetlogics szybko odlewania można zrobić z prostego liczby na ciąg konkatenacji, prowadząc zastąpi rozwiązanie zostać przekształcone do:
var length = (number + '').replace('.', '').length; // for floats