首頁  >  文章  >  web前端  >  JavaScript學習筆記之Function物件_基礎知識

JavaScript學習筆記之Function物件_基礎知識

WBOY
WBOY原創
2016-05-16 16:18:251042瀏覽

 在JavaScript中,函數function就是物件。

JS中沒有方法重載

  在JavaScript中,沒有方法(函數)重載的概念。

  範例:

複製程式碼 程式碼如下:


      
             
      
      
      


網頁中彈框顯示的是40。

  說明雖然第二個方法是兩個參數,但是仍然呼叫了它。

  交換兩個方法的順序之後,彈框顯示30,可以看出不管參數個數如何,是呼叫同名的後面的方法。

  怎麼解釋這個現象?

  這是因為函數宣告其實是建立了一個物件:

複製程式碼 程式碼如下:


   
       
   
       
   

  這樣add實際指向的是後面的對象,而方法調用的時候賦予的參數將會按順序賦給方法形式參數,後面沒有被賦值的參數就是undefined。

  JavaScript的函數呼叫的時候沒有嚴格的參數個數檢查,實參個數小於形參個數是可以的,沒有被賦值的形參就是未定義值undefined。

  實參個數大於形參個數也是可以的,這樣只有前面的實參會被使用,多出來的實參不會被使用。

Function物件

  在JavaScript中有一個Function對象,所有自訂的函數都是Function物件類型的。

  Function物件接收的所有參數都是字串類型的,其中最後一個參數就是要執行的函數體,而前面的參數則是函數真正需要接收的參數。

  範例:

複製程式碼 程式碼如下:


   
       
   
       
   

隱含物件arguments

  在JavaScript中,每個函數都有一個隱含的物件arguments,表示給函數實際傳遞的參數。

  arguments和函數的形式參數及其個數無關。

  arguments有個有用的屬性length,表示實參的長度。可以藉助這個來模擬出函數的重載:

  練習範例:

複製程式碼 程式碼如下:


   
       
        函數 add(number1, number2)
        {
            警報(參數。長度);           
            警報(參數[0]);
            警報(參數[1]);
            警報(參數[2]);
        }   
        //新增(2,3,4);
        函數 add2()
        {
            if(1 == argument.length)
            {
                警報(參數[0]);
            }
            else if(2 == argument.length)
            {
                警報(參數[0]參數[1]);
            }
            else if(3 == argument.length)
            {
                警報(參數[0]參數[1]參數[2]);
            }
        }
        加2(3);
        加2(3, 4);
        add2(3, 4, 5);
        腳本>
    頭>
       
    身體>

每個函數物件都有一個length屬性,表示該函數期望接收的參數格式。

它與函數的arguments不同,arguments.length表示函數實際接收的參數個數。

範例:

複製程式碼程式碼如下:


   
       
        var add = function(num, num2, num3)
        {
            警報(數字 數字2 數字3);
        }   
        警報(新增長度); //輸出3
        新增(1,2,3);
        var add2 = function()
        {
        }
        警報(add2.length); // 輸出0
        腳本>
    頭>
   
    身體>

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn