Programming

JavaScript에서 문자열로 캐스트

procodes 2020. 5. 23. 23:23
반응형

JavaScript에서 문자열로 캐스트


StringJavaScript에서 변수를 캐스팅하는 세 가지 방법을 찾았습니다 .
jQuery 소스 코드에서 이러한 세 가지 옵션을 검색했으며 모두 사용 중 입니다.
그들 사이에 차이점이 있는지 알고 싶습니다.

value.toString()
String(value)
value + ""

데모

그들은 모두 같은 결과물을 생산하지만 그중 하나가 다른 것보다 낫습니까?
나는 + ""문자가 절약된다는 장점이 있지만 그다지 큰 이점은 아닙니다.


(가) 때 그들은 다르게 행동 할 value것입니다 null.

  • null.toString()오류 발생 -null의 'toString'메소드를 호출 할 수 없음
  • String(null)반환 값- "널"
  • null + ""또한 "널"을 리턴합니다.

valueis 인 경우 매우 유사한 동작이 발생합니다 undefined( jbabey 's answer 참조 ).

그 외에는 무시할만한 성능 차이가 있습니다. 큰 루프에서 사용하지 않는 한 걱정할 가치가 없습니다.


차이점이 있지만 질문과 관련이 없을 수도 있습니다. 예를 들어, toString 프로토 타입은 정의되지 않은 변수에 존재하지 않지만 다른 두 가지 방법을 사용하여 undefined를 문자열로 캐스트 할 수 있습니다.

​var foo;

​var myString1 = String(foo); // "undefined" as a string

var myString2 = foo + ''; // "undefined" as a string

var myString3 = foo.toString(); // throws an exception

http://jsfiddle.net/f8YwA/


그것들은 동일하게 동작하지만 toString숫자 이진수, 8 진수 또는 16 진수 문자열을 변환하는 방법을 제공합니다 :

예:

var a = (50274).toString(16)  // "c462"
var b = (76).toString(8)      // "114"
var c = (7623).toString(36)   // "5vr"
var d = (100).toString(2)     // "1100100"

이 JSPerf 테스트 에 따르면 속도가 다릅니다. 그러나 대량으로 사용하지 않는 한 잘 수행해야합니다.

완전성을 위해 : asawyer가 이미 언급 했듯이이.toString() 방법 을 사용할 수도 있습니다 .


위의 모든 것 외에도 정의 된 값에 대해 다음을 알아야합니다 v.

  • String(v) 전화 v.toString()
  • '' + vv.valueOf()다른 유형 캐스트 ​​이전의 통화

따라서 다음과 같은 작업을 수행 할 수 있습니다.

var mixin = {
  valueOf:  function () { return false },
  toString: function () { return 'true' }
};
mixin === false;  // false
mixin == false;    // true
'' + mixin;       // "false"
String(mixin)     // "true"

FF 34.0 및 노드 0.10에서 테스트


null, undefined, NaN, 0 및 false로 OK이면 모두 ''로 캐스팅하는 (s ? s+'' : '')것이 더 빠릅니다.

http://jsperf.com/cast-to-string/8 참조

참고-현재 브라우저마다 큰 차이가 있습니다.


실제 예 : 임의의 수의 매개 변수로 호출 할 수있는 로그 함수가 있습니다 log("foo is {} and bar is {}", param1, param2). 경우 DEBUG플래그로 설정 true, 괄호는 지정된 파라미터로 대체 취득하고, 문자열이 전달됩니다 console.log(msg). 매개 변수는 문자열, 숫자 및 JSON / AJAX 호출에 의해 반환 될 수있는 것 null입니다.

  • arguments[i].toString()가능한 null값으로 인해 옵션이 아닙니다 (Connell Watkins 답변 참조)
  • JSLint가에 대해 불평 할 것 arguments[i] + ""입니다. 이것은 무엇을 사용해야할지 결정에 영향을 줄 수도 있고 그렇지 않을 수도 있습니다. 일부 사람들은 JSLint를 엄격하게 준수합니다.
  • In some browsers, concatenating empty strings is a little faster than using string function or string constructor (see JSPerf test in Sammys S. answer). In Opera 12 and Firefox 19, concatenating empty strings is rediculously faster (95% in Firefox 19) - or at least JSPerf says so.

On this page you can test the performance of each method yourself :)

http://jsperf.com/cast-to-string/2

here, on all machines and browsers, ' "" + str ' is the fastest one, (String)str is the slowest

참고URL : https://stackoverflow.com/questions/11083254/casting-to-string-in-javascript

반응형