返回介绍

第一部分 类型和语法

第二部分 异步和性能

A.7 实现中的限制

发布于 2023-05-24 16:38:21 字数 846 浏览 0 评论 0 收藏 0

JavaScript 规范对于函数中参数的个数,以及字符串常量的长度等并没有限制;但是由于 JavaScript 引擎实现各异,规范在某些地方有一些限制。

例如:

function addAll() {
    var sum = 0;
    for (var i=0; i < arguments.length; i++) {
        sum += arguments[i];
    }
    return sum;
}

var nums = [];
for (var i=1; i < 100000; i++) {
    nums.push(i);
}

addAll( 2, 4, 6 );       // 12
addAll.apply( null, nums );  // 应该是: 499950000

在一些 JavaScript 引擎中你会得到正确答案 499950000 ,而另外一些引擎(如 Safari 6.x)中则会产生错误“RangeError: Maximum call stack size exceeded”。

下面列出一些已知的限制:

· 字符串常量中允许的最大字符数(并非只是针对字符串值);

· 可以作为参数传递到函数中的数据大小(也称为栈大小,以字节为单位);

· 函数声明中的参数个数;

· 未经优化的调用栈(例如递归)的最大层数,即函数调用链的最大长度;

· JavaScript 程序以阻塞方式在浏览器中运行的最长时间(秒);

· 变量名的最大长度。

我们不会经常碰到这些限制,但应该对它们有所了解,特别是不同的 JavaScript 引擎的限制各异。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文