<div class="codetitle"> <span><a style="CURSOR: pointer" data="88238" class="copybut" id="copybut88238" onclick="doCopy('code88238')"><u>复制代码</u></a></span> 代码如下:</div> <div class="codebody" id="code88238"> <br> <br> <br> <br><meta charset="UTF-8"> <br><title>Insert title here</title> <br><script type="text/javascript"> <BR>/* <BR>*1.js 中不存在函数的重载 <BR>2.js函数定义时候的形参个数,和执行时候时,传递的实参的个数可以不一样。 <BR>3.js执行时候,会将真实的参数,封装成组arguments <br><br>*/ <BR>function add(a){ <BR>return a+10; <BR>} <BR>var add=new Function("a","return a+10"); <BR>//alert(add(5)); <BR>function add(num1,num2){ <BR>return num1+num2; <BR>} <BR>var add=new Function("num1","num2","return num1+num2"); <BR>alert(add(5,6)); <BR>alert(add(5));//这样调用的结果是NaN:因为调用的时后定义的两个参数的函数 <BR>//也就是虽然有var的声明,但是javascript中只要变量名称相同,后定义的就会覆盖 <BR>//之前定义的=======得出的结论就是js中不存在函数的重载。 <br><br>//-------------------用arguments对象模拟方法的重载----- <BR>//-依据不同的参数个数,调用不同的代码块,最多25个参数 <BR>function addNum(){ <BR>alert(arguments.length); <BR>for(var x=0;x<arguments.length;x++){ <BR>alert(arguments[x]); <BR>//这个对象只能爱函数体内 <BR>} <BR>if(arguments.length==1){ <BR>return arguments[0]+10; <BR>}else if(arguments.length==2){ <BR>return arguments[0]+arguments[1]; <BR>}else{ <BR>return "参数错误,请核对"; <BR>} <BR>} <BR>var value=addNum(10,20,30); <BR>alert("函数的返回值:"+value);//结果value的值就是:"参数错误,请核对" <BR>//事实上,是通过参数的判断,去实现调用不同的函数功能,并且返回不同的值;这样做类似的实现了java中的重载 <BR>//但是本质上,js中是没有重载的,相同的变量,在不同的位置出现,若赋值后,必然会覆盖前面声明的变量。当然 <BR>//这里面排除掉函数内部的量和函数外部变量的这一种关系。 <BR></script> <br> <br> <br><br> <br> <br> </div>