国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript學習筆記之Function對象

2024-05-06 16:15:08
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JavaScript學習筆記之Function對象的相關資料,需要的朋友可以參考下
 

 在JavaScript中,函數function就是對象。

JS中沒有方法重載

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

  例子:

 

復制代碼代碼如下:

<html>
       <head>
              <script type="text/javascript"> 
              function add(number)
              {
                    alert(number + 20);   
              }
              function add(number, number1)
              {
                     alert(number + 30);   
              }           
              add(10);
              </script>
       </head>
       <body>
       </body>
</html>

 

網頁中彈框顯示的是40。

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

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

  怎么解釋這個現象?

  這是因為函數聲明實際上是建立了一個對象:

 

復制代碼代碼如下:

<html>
    <head>
        <script type="text/javascript">
        function add(number)
        {
             alert(number + 20);    
        }
        /*
        上面的函數等價于:
        var add = function(number)
        {
            alert(number + 20);
        }
        */        
        function add(number, number1)
        {
            alert(number + 30);    
        }
        /*
        上面的函數等價于:
        var add = function(number, number1)
        {
            alert(number + 30);
        }    
        */
        add(10);
        </script>
    </head>
    <body>    
    </body>
</html>

 

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

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

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

Function對象

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

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

  例子:

 

復制代碼代碼如下:

<html>
    <head>
        <script type="text/javascript">
        var add = new Function("number", "number1", "alert(number + number1);");
        var add = new Function("number", "alert(number + 20);");
        add(10, 30);
        </script>
    </head>
    <body>    
    </body>
</html>

 

隱含對象arguments

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

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

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

  練習例子:

 

復制代碼代碼如下:

<html>
    <head>
        <script type="text/javascript">
        function add(number1, number2)
        {
            alert(arguments.length);            
            alert(arguments[0]);
            alert(arguments[1]);
            alert(arguments[2]);
        }    
        //add(2, 3, 4);
        function add2()
        {
            if(1 == arguments.length)
            {
                alert(arguments[0]);
            }
            else if(2 == arguments.length)
            {
                alert(arguments[0] + arguments[1]);
            }
            else if(3 == arguments.length)
            {
                alert(arguments[0] + arguments[1] + arguments[2]);
            }
        }
        add2(3);
        add2(3, 4);
        add2(3, 4, 5);
        </script>
    </head>
    <body>    
    </body>
</html>

 

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

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

  例子:

 

復制代碼代碼如下:

<html>
    <head>
        <script type="text/javascript">
        var add = function(num, num2, num3)
        {
            alert(num + num2 + num3);
        }    
        alert(add.length); //輸出3
        add(1, 2, 3);
        var add2 = function()
        {
        }
        alert(add2.length); //輸出0
        </script>
    </head>
    <body>
    </body>
</html>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 武平县| 白山市| 法库县| 沙河市| 青河县| 扶余县| 南京市| 大同市| 虹口区| 曲麻莱县| 温宿县| 兴山县| 德清县| 卢龙县| 应城市| 南投县| 新巴尔虎右旗| 如皋市| 扎兰屯市| 阿克苏市| 甘德县| 南城县| 德江县| 潼关县| 内黄县| 阿图什市| 万安县| 兴安盟| 双牌县| 张掖市| 勃利县| 咸丰县| 筠连县| 湾仔区| 营山县| 涡阳县| 曲靖市| 稷山县| 惠东县| 宁陵县| 云浮市|