Ho trovato la seguente domanda su StackOverflow: How many parameters are too many?Quanti parametri sono troppi in JavaScript?
Questo mi ha fatto pensare, esiste un limite pratico imposto al numero di parametri di una funzione JS?
test(65536); // okay
test(65537); // too many
function test(n) {
try {
new Function(args(n), "return 42");
alert(n + " parameters are okay.");
} catch (e) {
console.log(e);
alert(n + " parameters are too many.");
}
}
function args(n) {
var result = new Array(n);
for (var i = 0; i < n; i++)
result[i] = "x" + i;
return result.join(",");
}
Risulta, JavaScript impone un limite pratico di 65536 parametri sulle funzioni.
Tuttavia, ciò che è interessante è che il messaggio di errore dice che il limite è di 65535 parametri:
SyntaxError: Too many parameters in function definition (only 65535 allowed)
Così, ho due domande:
- Perché questa discrepanza? Si tratta di un errore off-by-one nelle implementazioni linguistiche?
- Lo standard ECMAScript impone questo limite ai parametri di funzione?
Dipende dalla VM in esecuzione JavaScript http://stackoverflow.com/questions/22747068/is-there-a-max-number-of-arguments-javascript-functions-can-accept – Noctisdark
@Noctisdark Risulta in Firefox il limite 65535 sui parametri di funzione. Non riesco a testare IE perché sto usando Linux. Poiché Opera è ora solo Google Chrome sotto il cofano, presumo che si comporti allo stesso modo di Chrome. –
Non che qui faccia una grande differenza, ma il test è difettoso poiché è anche vincolato dal numero massimo di elementi supportati da un array. –