javascript 函数参数限制说明

测试结果:

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.

(0)

相关推荐

  • javascript,php获取函数参数对象的代码

    例如: 复制代码 代码如下: function say () { alert (arguments[0]+'说:'+arguments[1]); } say ('fanglor','fanglor is a boy !'); 结果:弹出 fanglor 说:fanglor is a boy ! -------------------------------------------------------------------------------- 这个有点类似于php 中的 func_ge

  • 浅谈JavaScript函数参数的可修改性问题

    一道笔试题思考而来的,通常情况下没人会在函数内部修改参数值.这里仅拿出来讨论,有三种方式可以修改. 1,直接修改函数声明时的形参 复制代码 代码如下: function f1(a) {     alert(a);     a = 1;//修改形参a     alert(1 === a);     alert(1 === arguments[0]); } f1(10); 函数f1定义了参数a,调用时传参数10,先弹出10,修改a为1,弹出两次true,a和arguments[0]都为1了. 2,通

  • 深入理解JavaScript函数参数(推荐)

    前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数. arguments javascript中的函数定义并未指定函数形参的类型,函数调用也未对传入的实参值做任何类型检查.实际上,javascript函数调用甚至不检查传入形参的个数 function add(x){ return x+1; } console.log(add(1));//2 console.log(add('1'));/

  • JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享

    对于"JavaScript 函数参数是传值(byVal)还是传址(byRef)"这个问题,普遍存在一个误区:number,string等"简单类型"是传值,Number, String, Object, Array等"复杂类型"是传址.这样不对吗?为什么会有这样的误区?看一下这两段代码: 复制代码 代码如下: //造成传值假象的代码function modifyLikeByVal(x){  x = 1;  console.log('x = %d'

  • JavaScript函数参数使用带参数名的方式赋值传入的方法

    本文实例讲述了JavaScript函数参数使用带参数名的方式赋值传入的方法.分享给大家供大家参考.具体分析如下: 这里其实就是在给函数传递参数的时候,可以使用 参数名:参数值的方式传递,这样不会传递错.不过下面的代码是通过字典来实现的,不像python原封就支持这样的方法 function foo({ name:name, project:project}) { Print( project ); Print( name ); } 调用方法 foo({ name:'soubok', projec

  • javascript 函数参数原来是可以有缺省值的

    无标题文档 /** * 根据类名获得元素 * 参数说明: * 1.className 类名 * 2.tag 元素名 默认所有元素 * 3.elm 父元素 默认doucment */ document.getElementsByClassName = function(className, tag, elm) { var testClass = new RegExp("(^|\s)" + className + "(\s|$)"); var tag = tag ||

  • 深入理解javascript函数参数与闭包

    最近在学习javascript的函数,函数是javascript的一等对象,想要学好javascript,就必须深刻理解函数.本人把学习的过程整理成文章,一是为了加深自己函数的理解,二是给读者提供学习的途径,避免走弯路.内容有些多,但都是笔者对于函数的总结. 1.函数参数 1.1:参数是什么 1.2:参数的省略 1.3:参数默认值 1.4:参数传递方式 1.5:同名参数 1.6:arguments对象 2.闭包 2.1:闭包定义 2.2:立即调用的函数表达式(IIFE, Immediately

  • JavaScript函数参数的传递方式详解

    JavaScript使用一个变量对象来追踪变量的生存期.基本类型值被直接保存在变量对象内:而引用类型值则作为一个指针保存在变量对象内,该指针指向实际对象在内存中的存储位置. 基本类型值的传递 向参数传递基本类型值时,被传递的值会被复制给一个局部变量(即命名参数,或者是arguments对象中的一个元素). function addOne (num) { num++; return num; } var count = 1; var result = addOne(count); console.

  • javascript 函数参数限制说明

    测试结果: safari 下是65535个.即 ushort 来存储(2字节 16个1).更多的则忽略. 其他浏览器 至少是int.MaxValue .据说FireFox 甚至是用long 来维护 实参数. 其他浏览器 也许是int 或者可能是uint .这个就不管了. 毕竟我们知道了瓶颈 在 65535. 基于 以上基础.可以在 连接数组时 考虑优先采用 [].push.apply(a,b) 代替 a=a.concat(b); 我们只需要注意 对于safari 来说 b的length不能超过6

  • JavaScript函数的调用以及参数传递

    JavaScript 函数调用 JavaScript 函数有 4 种调用方式. 每种方式的不同方式在于 this 的初始化. this 关键字 一般而言,在Javascript中,this指向函数执行时的当前对象. Note 注意 this 是保留关键字,你不能修改 this 的值. 调用 JavaScript 函数 函数中的代码在函数被调用后执行. 作为一个函数调用 实例 function myFunction(a, b) { return a * b; } myFunction(10, 2)

  • Javascript函数的参数

    本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘 函数的参数 对于参数值,JavaScript不会进行类型检查,任何类型的值都可以被传递给参数.             对于函数参数,如果过少,没得到值的参数值为undefined,如果过多,多的会被忽略掉. //调用函数时传入的实际参数 function add(num1, num2) { return num1 + num2; } //一切正常的调用方式 console.info(add(1, 2)); //3 //不检查参数的类型,

随机推荐