다른 브라우저는 int일 수도 있고 uint일 수도 있습니다. 결국 병목 현상은 65535에 있다는 것을 알고 있습니다.
위의 내용을 바탕으로 배열을 연결할 때 a=a.concat(b) 대신 [].push.apply(a,b)를 사용하는 것을 고려해 볼 수 있습니다.
Safari의 경우 b의 길이는 65535를 초과할 수 없다는 점만 참고하면 됩니다.
concat의 문제점은 생성된 새 배열이 두 배열 a와 b를 순회한 다음 a와 b의 요소를 순서대로 배치한다는 것입니다.
테스트 코드:
var 개수 = 100000, a = [1,2,3], b = [4,5,6], r = [], i, d;
d = 새 날짜 ; for (i = count; i-- ;){
a.concat(b);
}
r[0] = 새 날짜 - d;
d = 새 날짜 ;
for (i = count; i-- ;){
r.push.apply(a,b );
//a = [1,2,3] ;
}
r[1] = 새 날짜 - d;
경고(r);
ie6 chrome2 safari 3 firefox 2와 같은 오래된 브라우저라도 일부 브라우저가 제거되더라도 푸시에서는 완전히 승리한다고 결론을 내릴 수 있습니다.
//a = [1, 2 ,3]; 실제로 concat보다 효율이 좋습니다.