ECMA函数参数arguments的使用

来源:互联网 发布:linux mmap 编辑:程序博客网 时间:2024/06/06 08:36
       ECMAScript函数的参数与大多数其他语言中函数的参数有所不同。ECMAScript函数不介意传递进来多少个参数,也不在一乎传进来参数是什么数据类型。也就是说,即便你定义的函数只接收两个参数,在调用这个函数时也未必一定要传递两个参数。之所以会这样,原因是ECMAScript中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数(如果有参数的话)。如果这个数组中不包含任何元素,无所谓;如果包含多个元素,也没有问题,实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。    其实,arguments对象只是与数组类似(它并不是Array的实例)。因为可以使用方括号语法访问它的每一个元素〔即第一个元素是arguments[0],第二个元素是argumetns[1]。以此类推),使用length属性来确定传递进来多少个参数。
例:
function doadd(){    if(arguments.length==1){       alert(arguments[0]+10);    }    else if(arguments.length==2){       alert(arguments[0]+arguments[1]);    }}doadd(10);//20doadd(30,20); //50
    关于参数还要记住最后一点;没有传递值的命名参数将自动被赋予undefined值。这跟定义了变量但又没有初始化一样。 
另外arguments的值永远与对应命名参数值保存同步: 
1.function a(a1,a2){    arguments[0]=1;alert(arguments[0]+arguments[1]);}a(2,3); //输出42.function a(a1,a2){   arguments[0]=1;    a1=5;alert(a1+arguments[1]);}a(2,3);//输出8
0 0