回调和递归
最近维护项目的时候发现页面会越来越卡,打开控制台调试时发现内存已占满,然后就是打开NetWork,发现里面有一个请求异常的多,于是就开始定位这个请求。(如下图)于是,就有了这篇博客总结
递归函数
所谓递归函数,就是在函数体内直接或者间接的调用自己本身。使用递归如果稍微处理不当,就会进入死循环。书写递归的时候一定要注意书写出口
1
2
3
4
5
6
7
8
9
10
11 // 递归在函数内部调用自身
var i=10;
function test(){
i--;
if (i<=0) {
return;//出口
}
console.log(i)
test()
}
test();//打印结果9,8,7,6,5,4,3,2,1
若递归函数不给出口
1 | function test(){ |
递归的小应用
1 | // 快速排序 - 递归 |
回调函数
回调函数:把一个函数当做参数传给另一个函数,然后在另一个函数里面去调用这个函数。就叫做回调函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 // 应用场景:不知道什么时间应用,不知道应用什么函数
function request(fn){
console.log("开始网络请求")
setTimeout(function(){
console.log("得到请求数据");
fn();
},(Math.random()*3+1)*1000);
}
function show(){
console.log("数据展示开始")
}
function showWomen(){
console.log("这是一个程序媛的模块")
}
function showCar(){
console.log("这是汽车模块")
}
function showArmy(){
console.log("军事展览区")
}
request(show);
request(showArmy);
request(showWomen);
request(showCar);
总结
①函数内部定义函数—-闭包
②函数内部调用其他函数—函数调用
③函数内部调用参数传过来的函数—-回调函数
④函数内部调用自己这个函数—-递归