回调:
定义:把函数当做参数传递到另一个函数内部去调用,就叫回调。
应用场景:用于导航栏,当我们点击链接是才开始加载资源,避免同时加载多个资源,占用大量空间造成卡顿。
举例:
function request(fn){//这里的fn就相当于showCar、showWomen
console.log("发送网络请求");
setTimeout(function(){
console.log("得到请求数据");
fn();//相当于showCar();、showWomen();
},(Math.random()*3+1)*1000);
}
function showWomen(){
console.log("把女人展示在HTML上");
}
function showCar(){
console.log("把汽车展示在HTML上");
}
request(showWomen);
request(showCar);
打印结果如下:
递归:
定义:在函数的内部调用自身就是递归。
应用场景:快速排序。
举例:①打印数字1~10;
var i =10;
function test(){
var a = i--;
if(i<0){
return;
}
test();
console.log(a);//结果为2~10
}
test();
②实现1~n的累加:
function add(num){
if(num<=1){
return 1;
}
return num+add(num - 1);
}
var res = add(100);
console.log(res);
注意:区分回调和递归,回调是一个函数把自身外部的函数当做参数传递到自身内部来调用;而递归是自己调用自己。
总结:函数内部定义函数----闭包
函数内部调用其他函数----函数调用
函数内部调用参数传过来的函数----回调函数
函数内部调用自己这个函数----递归