ECMAScript 5.1, 파트 8.8
List 유형은 새로운 표현식, 함수 호출 및 단순한 값 목록이 필요한 기타 알고리즘에서 인수 목록 (11.2.4 참조)의 평가를 설명하는 데 사용됩니다. 이러한 시퀀스는 길이에 관계없이 가능합니다.
따라서 표준에는 제한이 없습니다. 코드가 현실 세계에서 실행하는 경우 물론,하지 표준 땅에서, 분명히이 일부 제한 (우주에서 입자의 예 수).
매개 변수를 함수에 전달하는 방법에는 두 가지가 있습니다.
- "말 그대로":
f(a, b, c)
- apply () 사용 :
f.apply(null, [a, b, c])
후자의 방법은 큰 인수 목록에 대한보다 현실적인 시나리오입니다.
이 JSFiddle 로 이동 하여 현재 브라우저의 각 제한을 확인하십시오.
몇 가지 브라우저를 직접 사용해 보았습니다.
| apply() | literal
----------------------------
Chrome 14 | 131155 | 32767
Chrome 35 | 126213 | 65535
Firefox 30 | 500001 | 65535
IE 9 | 254335 | 65533
IE 10 | 253667 | 65533
IE 11 | 252447 | 65533
Opera 22 | 126063 | 65535
Safari 4 | 524215 | 524205
Safari 7 | 65537 | 522159
나는 다른 컴퓨터에서 이러한 숫자의 많은 차이를 보았 기 때문에 브라우저 (OS?) 외에 다른 요인이 있다고 생각합니다.
이것은 퀴즈 가 아니라 실제 문제 입니다. 실제 예 :
Google Closure Library는 다음 기능을 정의했습니다.
goog.crypt.byteArrayToString = function(array) {
return String.fromCharCode.apply(null, array);
};
이것은 문자열의 길이가와 함께 전달할 수있는 인수 수에 대한 브라우저 제한 내에있는 경우에만 작동했습니다 Function.prototype.apply.
이 함수는 나중에 패치 되어 함수가 훨씬 더 복잡해졌습니다.
참고로 2012 년 3 월에 인수 제한을 논의 하는 공개 된 Webkit 문제가 있습니다.