Whats dif. 두 가지 방법 사이 :String()과 + ''사이의 타입 변환. 차이
null+'';
"null"
undefined + ''
"undefined"
NaN + ''
"NaN"
String(undefined)
"undefined"
String(null)
"null"
염두에 두어야 할 기능이 있습니까? 어쩌면 그들은 완전히 동일하고 성능이 있습니까?
Whats dif. 두 가지 방법 사이 :String()과 + ''사이의 타입 변환. 차이
null+'';
"null"
undefined + ''
"undefined"
NaN + ''
"NaN"
String(undefined)
"undefined"
String(null)
"null"
염두에 두어야 할 기능이 있습니까? 어쩌면 그들은 완전히 동일하고 성능이 있습니까?
모든 예제에서 두 번째 방법은 문자열 리터럴을 사용하여 문자열을 만드는 것입니다. 다음과 같은 경우에
null + ''
undefined + ''
NaN + ''
문자열과 연결되므로 이전 객체도 해당 문자열 표현으로 변환됩니다. 다음과 같은 표현에서
String(undefined)
String(null)
String
생성자는 객체의 문자열 표현을 구성하는 데 사용됩니다. 내부적으로 String(undefined)
과 undefined + ''
은 동일한 기능을 사용하여 문자열 표현으로 변환합니다.
다른 방법은 런타임에 문자열 값을 결정하지만 JavaScript 구현은 컴파일 시간 동안 문자열 리터럴을 이해할 수 있기 때문에 단일 문자열 리터럴을 사용하면 다른 메서드보다 약간의 성능 이점을 얻을 수 있습니다.
그들은 모두 같은 값인 false-y 값의 문자열 표현을 반환합니다.
그러나 성능은 크게 다를 수 있습니다. String()
이 undefined
및 null
에 대한보다 효율적인 반면
http://jsperf.com/converting-null-undefined-nan-to-string
예를 들어, 크롬과 파이어 폭스의 최신 버전 (시험 시간에 35.0과 28.0 각각), String(NaN)
보다 훨씬 더 효율적으로 NaN + ''
을 처리합니다. 사파리 7.0은 덜 신경 쓸 수 없었다.
보다 일반적인 경우 (예 : Number
을 String
으로 변환) 빈 문자열을 연결하여 새로운 객체를 생성하는 대 .toString()
대가 당분간 논쟁의 대상이되었습니다. 결과는 흥미 롭습니다.
http://jsperf.com/string-vs-tostring-vs-empty-string-value/2
마일리지는 브라우저 버전에 따라 크게 달라질 수 있습니다. 또한 미숙 한 최적화를 수행 할 때 가장 성능에 민감한 환경에서 가장 명확한 것은 무엇이든 할 수 있습니다. 그리고 예기치 않은 유형 강요에주의하십시오. 특히 false-y 값을 확인할 때주의하십시오.
결과는 동일합니다. 성능에 대해 알고 싶다면 jsperf를 사용하십시오. – Barmar