1.当传入的参数个数小于声明的参数个数时,缺少的参数值就是:undefined - function ReciveParam(/*第一个参数*/a,/*第二个参数*/b)
- {
- alert("a:"+a);// display:a:第一个参数
- alert("b:"+b); // display:b:undefined
- }
- function GiveParam()
- {
- ReciveParam("第一个参数");
- }
复制代码
2..函数中可以通过arguments对象来获取函数的全部参数 - function show()
- {
- var largest=Max(10,20,30,1,10000,88,56,123);
- alert(largest);//display:10000
- }
- function Max(m)
- {
- var re=0;
- for(var i=0;i<arguments.length;i++)
- {
- if(arguments>re)
- {
- re=arguments;
- }
- }
- return re;
- }
复制代码
Arguments对象是一个类似于数组的对象,可以按照参数的数目而不是名称来获取全部参数,并且arguments也具有length属性,可以用来获取获取实际参数的个数. arguments虽然具有一些数组的特性,但是他不是数组.实际上arguments[]是和实际参数是引用同一变量的两种方法: - function ChangeParamValue()
- {
- ChangParamValueDo("第一个参数","第二个参数");
- }
- function ChangParamValueDo(a,b)
- {
- alert("改变前:a:"+a+",b:"+b);// display:改变前:a:第一个参数,b:第二个参数
- arguments[0]="arguments0";
- arguments[1]="arguments1";
- alert("用arguments改变后:a:"+a+",b:"+b); // display:用arguments改变后:a:arguments0,b:arguments0
- }
- arguments有一个callee属性,用没过来引用当前正在执行的函数
- function f(x)
- {
- if(x<=1) return x;
- return x*arguments.callee(x-1);
- }
复制代码
3。把对象属性用作参数:这样可以不必去记参数的顺序,用对象的属性名来传参 - function ArrayCopy(name,age,grade,sex,height,weiht)
- {
- alert("name:"+name+" age:"+age+" grade:"+grade+" sex:"+sex+" height:"+height+" weiht:"+weiht);
- }
- function EasyCopy(args)
- {
- ArrayCopy(args.name||"",
- args.age||0,
- args.grade||"one",
- args.sex||"可选",
- args.height||100,
- args.weight||100 )
- }
- function show()
- {
- EasyCopy({name:'lily',age:'13',grade:'three'});
- EasyCopy({name:'mark',height:'180',weight:180});
- }
|