zoukankan      html  css  js  c++  java
  • JS函数arguments数组获得实际传参数个数

    JS与PHP在函数传参方面有点不同,PHP形参与实参个数要匹配,而JS就灵活多了,可以随意传参,实参比形参少或多都不会报错。

    实参比形参多不会报错

    1
    2
    3
    4
    5
    function say(a){
       alert(a);
    }
     
    say('琼台博客','WEB技术博客');

    执行结果

    琼台博客

    我们再来看看形参比实参多的结果

    1
    2
    3
    4
    5
    function say(a,b){
       alert('a 的值是 '+a+' b 的值是 '+b);
    }
     
    say('琼台博客');

    执行结果

    JS中arguments数组

    a 对应第一个实参“琼台博客”,b 没有对应的实参所以值为undefined

    arguments对象

    其实有时候我们在程序设计比较复杂的时候并不指定参数个数,都是灵活运用。在函数里有一个数组arguments就是专门存储实参数组的,通过arguments我们就可以知道实参个数以及值。

    1
    2
    3
    4
    5
    6
    7
    8
    function arg(){
        var str = '总共传了'+arguments.length+'个参数 ';
        for(var i=0;i<arguments.length;i++){   
            str += '第'+(i+1)+'个参数值:'+arguments[i]+' ';
        }
        alert(str);
    }
    arg('琼台博客','PHP博客','WEB技术博客');

    执行结果

    JS

    在以上例子中,我们定义函数arg并没有给它指定形参,而是使用arguments对象接收实参,非常灵活。

    比如我们可以利用它来计算出一组数字里最小的数字,不管这组数字有多少个。如以下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function arg(){
        var tmp = 0, str = '在 ';
        for(var i=0;i<arguments.length;i++){   
            for(var g=0;g<arguments.length;g++){
                if(arguments[g]<arguments[i]){
                   tmp = arguments[g];
                }
            }
           str += arguments[i]+',';
        }
        alert(str.substr(0,str.length-1)+' 里最小的值是 '+tmp);
    }
    arg(200,100,59,3500);

    执行 200,100,59,3500  四个数对比结果

    JS中arguments对象

    我们在加入两个数,分别是 5 和 60

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function arg(){
        var tmp = 0, str = '在 ';
        for(var i=0;i<arguments.length;i++){   
            for(var g=0;g<arguments.length;g++){
                if(arguments[g]<arguments[i]){
                   tmp = arguments[g];
                }
            }
           str += arguments[i]+',';
        }
        alert(str.substr(0,str.length-1)+' 里最小的值是 '+tmp);
    }
    arg(200,100,59,3500,5,60);

    执行 200,100,59,3500,5,60 六个数对比结果

    JS中arguments对象

    根据两次运算结果,我们发现无论我们传进多少个数字,都能正确比对结果。arguments一般用在实参个数不定的地方,比如上边的例子,你可以传5个数进去比较,也可以传100个数进去比较都可以。

  • 相关阅读:
    面向对象的继承关系体现在数据结构上时,如何表示
    codeforces 584C Marina and Vasya
    codeforces 602A Two Bases
    LA 4329 PingPong
    codeforces 584B Kolya and Tanya
    codeforces 584A Olesya and Rodion
    codeforces 583B Robot's Task
    codeforces 583A Asphalting Roads
    codeforces 581C Developing Skills
    codeforces 581A Vasya the Hipster
  • 原文地址:https://www.cnblogs.com/jx270/p/4576766.html
Copyright © 2011-2022 走看看