<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> <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> </div>