JavaScript 没有函数重载&Arguments对象

来源:互联网 发布:js字符串转换为日期 编辑:程序博客网 时间:2024/06/05 17:00

对于学过Java的人来说,函数重载并不是一个陌生的概念,但是javaScript中有函数重载么...接下来我们就进行测试

[html] view plaincopyprint?
  1. <script type="text/javascript">  
  2.     //JavaScript不存在函数重载现象  
  3.     var add=function(a,b){  
  4.         return a+b;  
  5.     }  
  6.     var add=function(a,b,c){  
  7.         return a+b+c;  
  8.     }  
[html] view plaincopyprint?
  1. <span style="white-space:pre">    </span>alert(1,2);  
  2.     alert(add(1,2,3));  
  3.   
  4.   
  5.   </script>  
这个案例也仿照java中的语法,来模拟函数重载..我们运行一下结果

alert(1,2):

alert(1,2,3):

结果对比发现:第一个运行的结果是NaN,第二个运行的结果正常。

JavaScript中不存在函数重载的现象,当同时出现两个相同的函数名驶,第二个会覆盖第一个.因此alet(1,2)会找第二个函数,但是它是实参中的第三个参数为空,因此结果报了NaN.

那么我们怎么样模仿Java中的函数重载现象呢?这里就要介绍Arguments对象...

<script type="text/javascript">  
  1.     //JavaScript不存在函数重载现象  
  2.     var add=function(){  
  3.         if(arguments.length==2){  
  4.             return arguments[0]+arguments[1];  
  5.         }else if(arguments.length==3){  
  6.             return arguments[0]+arguments[1]+arguments[2];  
  7.         }  
  8.     }  
  9.     alert(add(1,2,4));  
  10.   </script>  
functon必须是空的function(){}

根据arguments是一个数组,可以根据他的长度length来判断函数的参数的个数...

0 0