自调用与无函数名调用

对于下面的函数:

这是一个简单的自调用函数

通过一个简单的公式实现函数的自调用 输出从10到1互相相乘的结果

           function fn(n){
               if(n<=1){
                   return 1
               }else{
                   return n*fn(n-1)//10*9*..fn(n-1)
               }


           }
           var re=fn(10)//fn(10)=10*fn(9)=>fn(9)=9*fn(8)...2*fn(1)=2*1
           console.log(re);//1*...10*/

由下面的代码可知:

要打印出这个嵌套数组的所有数字在不知道内容的情况下

先将数组进行遍历 当有非数字时便取这个非数字的数组自调用在遍历直到遍历完所有数组中的数字

        var arr=[[1,2,3,4,[1,2,3,4],[1,2,3,4],[1,2,3,4]],[2,3,4,5,6]]
        // 假设你只知道数组内部全是(数字和数组的混套)
        // 打印出所有数字

        function fn(arr){
             //  遍历数组
            for(var i=0;i<arr.length;i++){
                if(typeof(arr[i])=="number"){
                    console.log(arr[i]);
                }else{
                    fn(arr[i])//是数组就在调用函数 for循环
                    }
                }
            }
            fn(arr)

对于没有函数名的情况如何自调用:

 arguments.length  实参的长度

 arguments.callee  正在运行的函数对象  下面是function这个函数  

      (function (n){
            if(n<=1){
                console.log(1);
            }else{
                console.log(n);
                arguments.callee(n-1)//不知道函数名的情况
            }
        })(10)
       //10 9 8 7 ...1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值