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

     总结:

  • 相关阅读:
    【Django】Django 定时任务实现(django-crontab+command)
    【Django】Django web项目部署(Nginx+uwsgi)
    【python】pandas & matplotlib 数据处理 绘制曲面图
    Struts2的简单使用
    Servlet,jsp,JSP技术 ,JSP编程
    Servlet、JSP中页面跳转的方式
    html/京东项目/京东网页高仿/js/jq/css/java web/
    Java ResourceBundle类的使用
    sql语句executeQuery和executeUpdate之间的区别
    jdbc/DAO模式
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/5791306.html
Copyright © 2011-2022 走看看