zoukankan      html  css  js  c++  java
  • 第十篇--------javascript函数-参数

    javascript函数的参数:形参,实参

          //function 参数
                
                //形参列表
                function test(a,b,c,d){    
                    //alert(test.length);        //形参个数,4个
                    
                    //函数的实际参数,内部就是用一个数组去接收函数的实际参数
                    //arguments 对象,可以访问函数的实际参数
            //arguments 对象只能在函数的内部使用
    alert(arguments.length); //2个 alert(arguments[0]); //10 alert(arguments[1]); //20 return a+b; } alert(test(10,20)); //30,函数的形参和实际参数不一致不会报错。

    但是这样写程序不严谨,我们希望的是只有形参和实参个数一致 的时候才去执行函数,否则抛出异常或者给一个提示

    所以加上判断:

    if(test.length == arguments.length){
           return a+b;
      }else{
           return '参数不正确!';
    }

    还有问题,test.length虽然能够取到形参的个数,但是一般不这么用,会有潜在性的问题。一般用arguments.callee例子:

          //递归
                function fact(num){
                    if(num<=1) return 1;
                    else 
                    return num*fact(num-1);    
                }
                var F = fact ;    //你把fact 赋值给了变量 F,相当于复制了一份
                fact = null;    //假设有其他人把 fact 弄成了null,
                alert(F(5));    //报错

    但是用arguments.callee来代替fact这样写就不会报错了:

          //递归
                function fact(num){
                    if(num<=1) return 1;
                    else 
                    return num*arguments.callee(num-1);    //使用arguments.callee,指向函数本身
                }
                var F = fact ;    //你把fact 赋值给了变量 F,相当于复制了一份
                fact = null;    //假设有其他人把 fact 弄成了null
                alert(F(5));    

    所以上边的用取形参也不用test.length,也使用arguments.callee.length:

    if(arguments.callee.length == arguments.length){
             return a+b;
     }else{
            return '参数不正确!';
     }
    

     总结:

  • 相关阅读:
    题解 P1030 【求先序排列】
    行列式及其打开方式
    题解 P2580 【于是他错误的点名开始了】
    题解 P1130 【红牌】
    题解 P5239 【回忆京都】
    题解 P1184 【高手之在一起】
    【笔记】自学ST表笔记
    题解 P1208 【[USACO1.3]混合牛奶 Mixing Milk】
    树状数组自学笔记
    EBS R12.2系统logo的修改
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/5791306.html
Copyright © 2011-2022 走看看