문자열 리터럴 (큰 따옴표 또는 작은 따옴표로 표시됨)과 비 생성자 컨텍스트 (즉, 새 키워드를 사용하지 않음)에서 문자열 호출에서 반환 된 문자열은 기본 문자열입니다. 자바 스크립트는 자동으로 프리미티브를 String 객체로 변환하므로 프리미티브 문자열에 String 객체 메소드를 사용할 수 있습니다. 메서드가 기본 문자열에서 호출되거나 속성 조회가 발생하는 컨텍스트에서 JavaScript는 자동으로 문자열 기본 형식을 래핑하고 메서드를 호출하거나 속성 조회를 수행합니다.
그래서 문자열 프리미티브에 대한 (논리적으로) 연산 (메소드 호출)은 문자열 method
에 적용 되기 전에 문자열 객체 (추가 작업)로 변환되기 때문에 문자열 객체에 대한 연산보다 느려 야한다고 생각했습니다 .
그러나이 테스트 케이스 에서는 결과가 반대입니다. 코드 블록-1 빠른 것보다 실행 코드 블록 2는 모두 코드 블록 아래에서 언급 :
코드 블록 -1 :
var s = '0123456789';
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
코드 블록 -2 :
var s = new String('0123456789');
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
결과는 브라우저마다 다르지만 코드 블록 -1 은 항상 더 빠릅니다. 누구든지 이것을 설명해 주시겠습니까? 왜 코드 블록 -1 이 코드 블록 -2 보다 빠릅니다 .
'0123456789'.charAt(i)
?
code block-1
더 빠른지 묻습니다 .
new String
의 또 다른 투명 레이어가 도입 됩니다.typeof new String(); //"object"