在 JavaScript 中有多少参数太多了

How many parameters are too many in JavaScript?

本文关键字:参数 太多 多少 JavaScript      更新时间:2023-09-26

我在StackOverflow上遇到了以下问题:多少个参数太多了?

这让我想到,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 标准是否对函数参数施加了此限制?

参数长度限制为 65536https://bugs.webkit.org/show_bug.cgi?id=80797

有不同的参数计数限制,具体取决于测试方式: http://mathiasbynens.be/demo/javascript-argument-count