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

     总结:

  • 相关阅读:
    Python split()方法分割字符串
    Python创建线程
    Python find()方法
    webpack中‘vant’全局引入和按需引入【vue-cli】
    webpack中‘mint-ui’全局引入和按需引入【vue-cli】
    nginx中 处理post方式打开页面的报错405
    nginx中 vue路由去掉#后的配置问题
    webpack中 VUE使用搜狐ip库查询设备ip地址
    webpack中 VUE使用百度地图获取地理位置
    VUE动态设置网页head中的title
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/5791306.html
Copyright © 2020-2023  润新知