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
相关文章推荐
- JavaScript的回调函数与递归函数
- Javascript 中的回调函数和递归函数简单实际分析学习
- Javascript 回调函数
- 详解 JavaScript 回调函数
- 详解JavaScript的回调函数
- javascript的回调函数
- 理解javascript中的回调函数(callback)
- 理解与使用Javascript中的回调函数
- 关于javascript 回调函数中变量作用域的讨论
- javascript的回调函数
- ArcGIS API for JavaScript 4.2学习笔记[7] 鹰眼(缩略图的实现及异步处理、Promise、回调函数、监听的笔记)
- Javascript中回调函数的使用
- JavaScript回调函数的使用
- Javascript-jQuery【1】-用promise()实现html()回调函数
- javascript 回调函数
- 浅谈javascript回调函数
- 理解和使用 JavaScript 中的回调函数
- Javascript实现图片预加载【回调函数,多张图片】
- JavaScript回调函数的实现
- 理解和使用 JavaScript 中的回调函数