javascript 函数参数限制说明
更新时间:2010年11月19日 21:23:45 作者:
我依稀记得哪本书上有说过,实参数限制是32个? 现在想想估计是我记错了..他也许说的是32位.
测试结果:
safari 下是65535个.即 ushort 来存储(2字节 16个1).更多的则忽略.
其他浏览器 至少是int.MaxValue .据说FireFox 甚至是用long 来维护 实参数.
其他浏览器 也许是int 或者可能是uint .这个就不管了. 毕竟我们知道了瓶颈 在 65535.
基于 以上基础.可以在 连接数组时 考虑优先采用 [].push.apply(a,b) 代替 a=a.concat(b);
我们只需要注意 对于safari 来说 b的length不能超过65535就ok啦.
concat 的 问题在于 产生的新数组 并 遍历 a 和 b 两个数组,再依次把a和b的元素放入.
测试代码:
var count = 100000, a = [1,2,3], b = [4,5,6], r = [], i, d;
d = new Date ;
for (i = count; i-- ;){
a.concat(b);
}
r[0] = new Date - d;
d = new Date ;
for (i = count; i-- ;){
r.push.apply(a,b);
//a = [1,2,3] ;
}
r[1] = new Date - d;
alert(r);
可以得出结论 即使是ie6 chrome2 safari 3 firefox 2这样古老的浏览器 push也是完胜的,个别浏览器 即使去掉 //a = [1,2,3] ; 注释部分. 居然效率也是胜过 concat的. 如chrome7 dev 和safari 5.
相关文章
JavaScript中变量声明有var和没var的区别示例介绍
在函数内部,有var和没var声明的变量是不一样的。有var声明的是局部变量,没var的,声明的全局变量,所以可以借此向外暴露接口东东2014-09-09
javascript中html字符串转化为jquery dom对象的方法
最近项目需求要开发百度地图相关的一个应用,需要从硬编码的html字符串中提取自己想要的元素以及属性信息,由于在js中或者jq中操作元素节点以及属性都是使用dom对象或者jq对象。下面介绍javascript中html字符串转化为jquery dom对象的方法,需要的朋友可以参考下2015-08-08
将input框中输入内容显示在相应的div中【三种方法可选】
本篇文章主要介绍了在input框中输入内容,会相应的显示在下面的div中的不同做法:js方法;jQuery方法;AngularJs方法,具有很好的参考价值。下面跟着小编一起来看下吧2017-05-05


最新评论