5

Ich habe die folgende Frage zu StackOverflow: How many parameters are too many?Wie viele Parameter sind in JavaScript zu viele?

Ich habe gedacht, gibt es eine praktische Grenze für die Anzahl der Parameter einer JS-Funktion auferlegt?

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(","); 
 
}

Es stellte sich heraus, erlegt JavaScript eine praktische Grenze von 65536 Parameter auf Funktionen.

Aber was interessant ist, dass die Fehlermeldung besagt, dass die Grenze 65535 Parameter:

SyntaxError: Too many parameters in function definition (only 65535 allowed) 

Also, ich habe zwei Fragen:

  1. Warum diese Diskrepanz? Ist es ein off-by-one Fehler in den Sprachimplementierungen?
  2. Legt der ECMAScript-Standard diese Begrenzung für Funktionsparameter fest?
+2

Es hängt von der VM läuft JavaScript http://stackoverflow.com/questions/22747068/is-there-a-max-Anzahl der Argumente-Javascript-Funktionen-kann akzeptieren – Noctisdark

+0

@Noctisdark In Firefox wird das 65535 Limit für Funktionsparameter eingehalten. Ich kann den IE nicht testen, weil ich Linux verwende. Da Opera jetzt nur noch Google Chrome unter der Haube ist gehe ich davon aus, dass es sich genauso verhält wie Chrome. –

+0

Nicht, dass es hier einen großen Unterschied macht, aber der Test ist fehlerhaft, da er auch durch die maximale Anzahl von Elementen eingeschränkt wird, die ein Array unterstützt. –

Antwort