码迷,mamicode.com
首页 > 编程语言 > 详细

第十篇--------javascript函数-参数

时间:2016-08-20 23:08:07      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

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

 总结:

技术分享

第十篇--------javascript函数-参数

标签:

原文地址:http://www.cnblogs.com/lihaoyang/p/5791306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!