我在StackOverflow上看到了以下问题:有太多参数会导致什么问题?
这让我思考,JS函数的参数数量是否受到实际限制?
原来,JavaScript 函数在参数数量上有一个实际限制,最多只能有 65536 个。
但是,有趣的是错误提示称这个限制是 65535。
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(",");
}
但是,有趣的是错误提示称这个限制是 65535。
SyntaxError: Too many parameters in function definition (only 65535 allowed)
所以,我有两个问题:
- 为什么会有这种差异?是语言实现中的一位错误吗?
- ECMAScript标准是否对函数参数数量有限制?