2016-03-11 16 views
5

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:

  1. Perché questa discrepanza? Si tratta di un errore off-by-one nelle implementazioni linguistiche?
  2. Lo standard ECMAScript impone questo limite ai parametri di funzione?
+2

Dipende dalla VM in esecuzione JavaScript http://stackoverflow.com/questions/22747068/is-there-a-max-number-of-arguments-javascript-functions-can-accept – Noctisdark

+0

@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. –

+0

Non che qui faccia una grande differenza, ma il test è difettoso poiché è anche vincolato dal numero massimo di elementi supportati da un array. –

risposta

Problemi correlati