테스트 결과:
Safari 아래에는 65535개가 있습니다. 저장하기에는 부족합니다(2바이트 16 1).
다른 브라우저는 적어도 int.MaxValue입니다. FireFox는 심지어 실제 매개변수를 유지하기 위해 long을 사용한다고 합니다.
다른 브라우저는 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보다 효율이 좋습니다.