5

Я столкнулся со следующим вопросом о StackOverflow: How many parameters are too many?Сколько параметров слишком много в JavaScript?

Это заставило меня подумать, существует ли практическое ограничение на количество параметров функции 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(","); 
 
}

Оказывается, JavaScript накладывает практическое ограничение 65536 параметров на функции.

Однако, что интересно, что сообщение об ошибке говорит, что предел 65535 параметры:

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

Итак, у меня есть два вопроса:

  1. Почему такое расхождение? Является ли это ошибкой по-одному в языковых реализациях?
  2. Включает ли стандарт ECMAScript этот предел для параметров функции?
+2

Это зависит от VM работает Javascript http://stackoverflow.com/questions/22747068/is-there-a-max-number-of-arguments-javascript-functions-can-accept – Noctisdark

+0

@Noctisdark Оказывается, в Firefox соблюдается ограничение на функциональные параметры 65535. Я не могу проверить IE, потому что я использую Linux. Поскольку Opera теперь просто Google Chrome под капотом, я предполагаю, что он ведет себя так же, как делает Chrome. –

+0

Не то чтобы это имеет здесь большое значение, но тест является ошибочным, так как он также ограничен максимальным количеством элементов, поддерживаемых массивом. –

ответ

Смежные вопросы