javascript arguments与javascript函数重载

页面导航:首页 > 网络编程 > JavaScript > javascript arguments与javascript函数重载

javascript arguments与javascript函数重载

来源: 作者: 时间:2016-02-03 09:20 【

1 所 有的函数都有属于自己的一个arguments对象,它包括了函所要调用的参数。他不是一个数组,如果用typeof arguments,返回的是rsquo;objectrsquo;。虽然我们可以用调用数据的方法来调用arg
1.所 有的函数都有属于自己的一个arguments对象,它包括了函所要调用的参数。他不是一个数组,如果用typeof arguments,返回的是’object’。虽然我们可以用调用数据的方法来调用arguments。比如length,还有index方法。但是数 组的push和pop对象是不适用的。
 
2.函数定义时的参数个数和函数调用时的参数个数没有任何关系。 在函数中可以用f.arguments[0]和f.arguments[1]得到调用时传入的第一和第二个参数,arguments不能够创建,是函数自身的参数,只有当函数开始执行是才能使用。
 
虽然arguments的使用方法,很像数组,但是它并不是数组。arguments对象的长度是由实参个数而不是形参个数决定的。形参是函数内部重新开辟内存空间存储的变量,但是其与arguments对象内存空间并不重叠。
 
1 function argumentsTest (a,b) {
2     // alert(typeof arguments);
3     alert(arguments.length);
4     alert(arguments[1]);
5 }
6 argumentsTest(1,2,3,4);
输出的结果为4,2;
 
1 function argumentsTest (a,b) {
2     alert(arguments.callee);
3     alert(arguments.callee.length);
4 }
5 argumentsTest(1,2,3,4);
输出的结果为argumentsTest,2;
 
3.由Script中函数的声明和调用特性,可以看出中函数是不能重载的。
 
根据其他语言中重载的依据:"函数返回值不同或形参个数不同",我们可以得出上述结论:
 
第一:Javascript函数的声明是没有返回值类型这一说法的;
 
第二:JavaScript中形参的个数严格意义上来讲只是为了方便在函数中的变量操作,实际上实参已经存储在arguments对象中了。
 
另外,从JavaScript函数本身深入理解为什么JavaScript中函数是不能重载的:在JavaScript中,函数其实也是对象,函数名是关于函数的引用,或者说函数名本身就是变量。
 
如何实现javascript的重载呢?
 
使用arguments判定参数的个数使用不同的方法实现函数重载:
 
 
 1 <script language="JavaScript">
 2 function f(length)
 3 {
 4     var len= arguments.length;
 5     if(1 == len)
 6     {
 7         var width = arguments[1];
 8         alert("高为:"+length+",宽为:"+width);
 9     }
10     else
11     {
12         alert("高为:"+length);
13     }
14 }
15 </srcipt>
 
4.arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。
 
 
1 function count(a){
2     if(a==1){
3         return 1;
4     } 
5     return a + arguments.callee(--a);
6 }
8 var mm = count(10);
9 alert(mm);
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<