您的位置:首页 > Web前端 > JavaScript

[学习笔记]JS function的参数问题

2011-10-10 16:27 609 查看
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[i]>re)

{

re=arguments[i];

}

}

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});

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: