[javascript] JavaScript에서 숫자를 문자열로 변환하는 가장 좋은 방법은 무엇입니까?
숫자를 문자열로 변환하는 가장 좋은 방법은 무엇입니까 (속도 이점, 선명도 이점, 메모리 이점 등)?
몇 가지 예 :
-
String(n)
-
n.toString()
-
""+n
-
n+""
답변
이처럼 :
var foo = 45;
var bar = '' + foo;
사실, 간단한 편의를 위해 일반적으로 이와 같이 수행하더라도 원시 속도에 대해 1,000 회 이상의 반복 이 장점이 있습니다..toString()
참조 성능 (내게로하지,하지만 난 내 자신을 작성 갔을 때 발견) 여기에 테스트 :
http://jsben.ch/#/ghQYR
위의 JSPerf 테스트를 기반으로 가장 빠릅니다. str = num.toString();
속도 차이 는 0.1 초에 100 만 번 변환 할 수 있다고 생각할 때 속도 차이가 크게 중요하지 않다는 점에 유의해야합니다 .
업데이트 : 브라우저마다 속도가 크게 다른 것 같습니다. Chrome num + ''
에서이 테스트를 기반으로 가장 빠른 것 같습니다 http://jsben.ch/#/ghQYR
업데이트 2 : 위의 테스트를 기반으로 Firefox 20.0.1은 샘플 .toString()
보다 약 100 배 느리게 실행 '' + num
됩니다.
답변
내 의견으로 n.toString()
는 그 명료 함을 위해 상을 받는다. 나는 그것이 더 많은 오버 헤드를 가지고 있다고 생각하지 않는다.
답변
언어에 익숙하지 않은 사람에게는 명백한 변환이 매우 분명합니다. 다른 사람들이 제안한 것처럼 유형 강제 변환을 사용하면 개발자가 강제 규칙을 모르는 경우 모호성이 생깁니다. 궁극적으로 개발자 시간은 CPU 시간보다 비싸므로 후자의 비용으로 전자에 맞게 최적화합니다. 즉,이 경우 차이는 무시할 수 있지만 확실하지 않은 경우 이러한 종류의 것들을 최적화하는 괜찮은 JavaScript 압축기가 있습니다.
위의 이유로 나는 다음과 같이 갈 것입니다 : n.toString()
또는 String(n)
. null이거나 정의되지 않은 String(n)
경우 실패하지 않기 때문에 아마도 더 나은 선택 일 것 n
입니다.
답변
… JavaScript의 파서는 숫자의 점 표기법을 부동 소수점 리터럴로 구문 분석합니다.
2..toString(); // the second point is correctly recognized
2 .toString(); // note the space left to the dot
(2).toString(); // 2 is evaluated first
답변
혀-인-뺨은 분명히 :
var harshNum = 108;
"".split.call(harshNum,"").join("");
또는 ES6에서는 단순히 템플릿 문자열을 사용할 수 있습니다 .
var harshNum = 108;
`${harshNum}`;
답변
다른 답변은 이미 다른 옵션을 다루었지만이 방법을 선호합니다.
s = `${n}`
간결하고 간결하며 이미 다른 많은 장소에서 사용되었으므로 (현대 프레임 워크 / ES 버전을 사용하는 경우) 프로그래머가 이해할 수있는 안전한 방법입니다.
답변
변수를 문자열로 변환하는 가장 간단한 방법은 해당 변수에 빈 문자열을 추가하는 것입니다.
5.41 + '' // Result: the string '5.41'
Math.PI + '' // Result: the string '3.141592653589793'