ECMAScript 5.1, parte 8.8
El tipo Lista se utiliza para explicar la evaluación de listas de argumentos (ver 11.2.4) en nuevas expresiones, en llamadas a funciones y en otros algoritmos donde se necesita una lista simple de valores ... Estas secuencias pueden tener cualquier longitud.
Entonces no hay límite en el estándar. Por supuesto, si su código se ejecuta en el mundo real, no en la tierra de los estándares, obviamente hay algún límite (por ejemplo, el número de partículas en el universo).
Hay dos formas de pasar parámetros a una función.
- "Literalmente":
f(a, b, c)
- Con aplicar ():
f.apply(null, [a, b, c])
Esta última forma es el escenario más realista para grandes listas de argumentos.
Vaya a este JSFiddle para ver los límites de cada uno de estos para su navegador actual.
Yo mismo probé algunos navegadores:
| 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
Vi diferencias en muchos de estos números en diferentes máquinas, así que creo que hay otros factores en juego además del navegador (¿el sistema operativo?).
Este es un problema real, no una trivia. Un ejemplo del mundo real:
La biblioteca de cierre de Google definió la siguiente función.
goog.crypt.byteArrayToString = function(array) {
return String.fromCharCode.apply(null, array);
};
Esto funcionó solo si la longitud de la cadena estaba dentro del límite del navegador para la cantidad de argumentos que se pueden pasar Function.prototype.apply.
La función se parcheó más tarde , lo que la hizo mucho más complicada.
Para su información, hay un problema de Webkit abierto presentado en marzo de 2012 que analiza el límite de argumentos.