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 '参数不正确!';
     }
    

     总结:

  • 相关阅读:
    Mybatis使用map传递参数与模糊查询写法
    mybatis实现简单的crud
    普通maven项目导入mybatis依赖后找不到程序包(已解决)
    MarkDown语法学习
    CentOS 7 配置hadoop(一) 安装虚拟机(伪分布)
    CentOS 7 配置hadoop(二) 配置hdfs(伪分布)
    生成32个的字母加数字
    mysql 横变竖 竖变横
    Java实现短息验证
    spring+springmvc+mybatis+Redis的配置文件
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/5791306.html
Copyright © 2011-2022 走看看