您的位置:首页 > Web前端 > JavaScript

JavaScript回调函数和递归函数

2016-12-01 20:43 281 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: