Я столкнулся со следующим вопросом о 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)
Итак, у меня есть два вопроса:
- Почему такое расхождение? Является ли это ошибкой по-одному в языковых реализациях?
- Включает ли стандарт ECMAScript этот предел для параметров функции?
Это зависит от VM работает Javascript http://stackoverflow.com/questions/22747068/is-there-a-max-number-of-arguments-javascript-functions-can-accept – Noctisdark
@Noctisdark Оказывается, в Firefox соблюдается ограничение на функциональные параметры 65535. Я не могу проверить IE, потому что я использую Linux. Поскольку Opera теперь просто Google Chrome под капотом, я предполагаю, что он ведет себя так же, как делает Chrome. –
Не то чтобы это имеет здесь большое значение, но тест является ошибочным, так как он также ограничен максимальным количеством элементов, поддерживаемых массивом. –