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

本文深入讲解了JavaScript函数中形参与实参的概念及其区别,并通过具体示例演示如何使用arguments对象来获取实参,以及如何确保传入参数的数量与定义相符。此外,还介绍了使用arguments.callee解决递归调用中可能遇到的问题。

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

 总结:

转载于:https://www.cnblogs.com/lihaoyang/p/5791306.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值