2016-03-11 30 views
5

Ben StackOverflow'daki aşağıdaki soruya geldi: How many parameters are too many?JavaScript'te kaç tane parametre var?

Bu JS fonksiyonunun parametrelerinin sayısına uygulanan pratik bir sınırı vardır, beni düşündürdü?

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

JavaScript fonksiyonları üzerine 65536 parametrelerin pratik bir sınırı uygular ortaya çıktı.

Ancak ilginç olan hata mesajı sınırı 65535 parametreler olduğunu söylüyor olmasıdır: Yani

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

, iki soru var:

  1. Neden bu tutarsızlık? Dil uygulamalarında birebir hata mı var?
  2. ECMAScript standardı bu sınırı işlev parametrelerine dayandırır mı?
+2

Bu javascript http://stackoverflow.com/questions VM çalıştıran bağlıdır/22747068/is-there-a-max sayısı-arguments-javascript-functions-kabul edebilir – Noctisdark

+0

@Noctisdark Firefox'ta ortaya çıkar, işlev parametrelerindeki 65535 sınırına uyulur. IE'yi test edemiyorum çünkü Linux kullanıyorum. Opera şu anda sadece Google Chrome tarafından kaputun altında olduğundan, Chrome'un yaptığı gibi davrandığını varsayıyorum. –

+0

Burada büyük bir fark yaratması değil, aynı zamanda bir dizi desteklediği maksimum eleman sayısıyla sınırlandırıldığından, test kusurludur. –

cevap