文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
A.7 实现中的限制
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论