var str = "hello"
str = "world" ;
백그라운드 작업:
1) "hello"를 저장할 문자열을 만들고 str이 이를 가리키도록 합니다.
2) "world"를 저장할 문자열을 만듭니다.
3) 결과를 저장할 문자열을 만듭니다.
4) str의 현재 내용을 결과 문자열에 복사합니다.
5) 결과 문자열에 world를 복사합니다.
6) str이 결과 문자열을 가리키도록 str을 업데이트합니다.
문자열이 연결될 때마다 2)~6)이 루프로 반복됩니다. 수백, 수천 번 반복하면 리소스가 많이 소모되고 성능에 영향을 미치게 됩니다.
해결책:
Array 객체를 사용하여 문자열을 저장한 다음 Join() 메서드를 사용하여 결과를 출력합니다.
Java의 StringBuffer 클래스를 모델로 했습니다.
function StringBuffer(){
이것 ._strings = 새 배열;
}
StringBuffer.prototype.append = 함수(str){
this._strings.push(str)
}
StringBuffer.prototype.toString = 함수 (){
return this._strings.join("");
}
테스트 성능:
코드 1: "="를 사용하여 문자열 연결
var d = new Date()
var str = "";
for(var i=0;i<10000;i ){
str = "test"
}
var d2 = new Date(); writeln(d2.getTime( )-d.getTime());
코드 2: StringBuffer 사용
var d = new Date()
var str = new StringBuffer()
for(var i=0;i<10000; ;i ){
str.append("test");
}
var res = str.toString()
var d2 = new Date()
document.writeln( d2.getTime()-d .getTime());
여러 테스트 결과로 판단하면 StringBuffer를 사용하면 시간을 50% 이상 절약할 수 있습니다.