zoukankan      html  css  js  c++  java
  • 理解函数调用_使用argument参数

    <!DOCTYPE html>
    <html lang="en">
    <head>  
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script src="../unitl/test.js"></script>
        <style>
            #results li.pass {color:green;}
            #results li.fail {color:red;}
        </style>
    </head>
    <body>
        <ul id="results"></ul>
    </body>
    <script>
    
    
    
        //声明一个函数,具有3个形参:a,b,c
        function whatever(a,b,c) {
    
    
            //值的准确性检验
            assert(a===1,"The value of a is 1");
            assert(b===2,"The value of b is 2");
            assert(c===3,"The value of c is 3");
    
            //共传入5个实参。
            assert(arguments.length ===5,"We've passed in 5 parameters");
    
    
    
            //验证传入的签3个实参与函数的3个形参匹配
            assert(arguments[0]===a,"The first arguments is assigned to a");
            assert(arguments[1] ===b, "The second argument is assigned to b");
            assert(arguments[2]===c,"The third argument is assigned to c");
    
            //验证额外的参数可以通过参数arguments获取。
            assert(arguments[3]===4,"We can access the fourth argument");
            assert(arguments[4]===5 ,"We can access the fifth argument");
    
        }
    
        //调用函数时闯入5个参数
        whatever(1,2,3,4,5);
       
    
    
    </script>
    </html>
    
    

    即时这里的whatever函数只定义了3个形参,但在调用的时候传入了5个参数;whatever(1,2,3,4,5);

          function whatever(a,b,c) {
                ...
          }
    

    我们可以通过对应的函数参数a,b和c访问到前3个参数的值;

          assert(a===1,"The value of a is 1");
          assert(b===2,"The value of b is 2");
          assert(c===3,"The value of c is 3");
    

    我们还可以使用arguments.length属性来获取传递给函数的实际参数的个数。
    通过数组下标的方式还可以访问到arguments参数的每个参数值。值得注意的是,这个也包括没有和函数形参相关联的剩余参数。

            assert(arguments[0]===a,"The first arguments is assigned to a");
            assert(arguments[1] ===b, "The second argument is assigned to b");
            assert(arguments[2]===c,"The third argument is assigned to c");
    
    
    
            assert(arguments[3]===4,"We can access the fourth argument");
            assert(arguments[4]===5 ,"We can access the fifth argument");
    

    arguments不是一个一个数组。你可能会被它的用法误导,毕竟他有length属性,而却可以通过数组下标的方式访问到每个元素。但它并非JavaScript数组,如果你尝试在arguments对象上使用数组的方法
    如(sort方法),会发现最终会报错。arguments对象仅仅是一个类数组的结构,在使用中要尤为注意。

  • 相关阅读:
    [笔记]Oracle遇到的问题及解决的办法
    [转载] linux三款好用网络监控软件(bwmng 、iftop、iptraf)
    IE无法打开internet站点已终止操作的解决办法 (转)
    怎样去掉桌面图标和字的蓝色阴影
    ASP.NET下载文件(转载)
    获取iframe内容IE下的延时 (转载)
    文件上传入数据库&从数据库中下载文件(转载)
    asp.net 4.0 A potentially dangerous Request.Form value was detected fr(转载)
    location.search
    IE6下的CSS BUG枚举 (转)
  • 原文地址:https://www.cnblogs.com/jamal/p/14116503.html
Copyright © 2011-2022 走看看