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