JavaScript回调函数和递归函数

JavaScript回调函数:

把一个函数的指针作为另外一个函数的参数,当调用这个函数时,这个函数就叫做回调函数。(通过指针来调用)

function math(num1,num2,fun){
          return fun(num1,num2);
      }
      alert(math(1,2,bb));

      function bb(num1,num2){
        return (num1+num2)*2-1;
      }
      /*alert(math(1,2,funtion(){
        return (num1+num2)*2-1;
      }));*/

bb函数这个指针传给了math函数中的参数fun,通过fun来调用

以上调用方式在有多个函数时很麻烦,故采用这种方式。

function math(num1,num2,fun){
          return fun(num1,num2);
      }
alert(math(1,2,funtion(){
        return (num1+num2)*2-1;
      }));

JavaScript递归函数:

递归函数指在函数内部直接或者间接的调用自己

例如:

function aa(num1){
        if(num1>1){
          aa(--num1);
        }
        document.write(num1);
      }
      aa(4);//1123
分析:当aa(4)调用时,外部的num1为4,进入函数判断,num1--,弹出num1位3,当aa(3)调用时,外部的num1为3,进入函数判断,num1--,弹出num1位2,当aa(2)调用时,外部的num1为2,进入函数判断,num1--,弹出num1位1,当aa(1)调用时,外部的num1为1,条件不成立,弹出num1位1。。那么现在每个调用的值知道啦,为什么是1123呢?涉及到栈和堆的一些知识,由于栈存储过程叫压入栈,先进后出。aa(4)先入栈,aa(3),aa(2),aa(1)依次入栈,那么aa(1)在最顶层,由先进后出的顺序当然是aa(1)对应的值先出栈,依次类推,故结果为1123。

function aa(num1){
        if(num1>1){
          aa(--num1);
        }
        document.write(num1);
      }
      aa(4);//1123*/

在看递归函数的一个案例 --阶乘:

 function aa(num1){
          if(num1 == 1){
            return num1;
          }else{
            return num1*aa(--num1);
          }
      }
      alert(aa(4));//4*3*2*1=24




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值