js笔记之函数的arguments对象的学习

来源:互联网 发布:godaddy域名绑定阿里云 编辑:程序博客网 时间:2024/06/05 08:59

js中参数分为形参和实参,下面直接上代码来讲解。

来看以下一个简单的js函数

1.什么是形参和实参?

//函数中的abcd为形参

function test(a,b,c,d)

{

return a+b;

}

alert(test(10,20));//这里的实数为实参

2.arguments对象

函数的实际参数内部就是用一个数组去接受函数的实际参数;

arguments 对象 可以访问函数的实际参数;

 只能在函数的内部访问和使用 

3.以上面函数为例

function test(a,b,c,d)

{

alert(test.length);//返回函数的形参的个数

alert(arguments.length)//返回函数实际参数的个数

alert(arguments.callee.length);//返回形参的个数

return a+b;

}

4.函数中多以arguments.length与arguemnts.callee.length来判断形参和实参的个数。

也许函数可以这样写

function test(a,b,c,d)

{

if(test.length==4)

return a+b+c+d;

else 

       return '参数个数不匹配';

}

function test(a,b,c,d)

{

if(test.length==arguments.length)

return a+b+c+d;

else

return "参数个数不匹配'

}

咋一看这两种写法一样,但是第一种就不太利于扩展,假设关于参数个数的比较还有很多,而你写的数字又是死的,一旦要改就动全部,所以第二种就不用这么麻烦了。

5.arguments.callee来代替函数自身,来看以下一个例子

function fact(num)

{

1.if(num<1) return 1;

2.return num*fact(num-1);

}

咋一看没什么问题,那么我们来执行一下这个操作,看看会有什么问题发生。

var F = fact ;
fact = null;
alert(F(5));

在第2行会报错,因为fact被置空了


因此下面的这种写法便会改善这种问题

function fact(num)

{

1.if(num<1) return 1;

2.return num*arguments.callee(num-1);

}



0 0
原创粉丝点击