<script>
//高阶函数:
//是对其他函数进行操作的函数,它接收函数作为参数或将函数作为返回值输出。
//函数也是一种数据类型,同样可以作为参数,传递给另外一个参数使用,最典型的就是作为回调函数。
function f1(a,b,callback){
console.log(a+b);
callback && callback()//callback存在才调用这个函数
}
f1(1,2,function(){
console.log('我是回调函数');
})
//闭包:主要作用,延伸了变量的作用范围
//变量作用域:全局变量和局部变量,函数执行完毕之后,本作用域内的局部变量会销毁。
//闭包指有权访问另一个函数作用域中变量的函数。
//简单理解就是,一个作用域可以访问另一个函数内部的局部变量。
function fn(){
let num=10;
function fun(){
console.log(num);
num++;
}
// fun();
return fun;
}
// fn();
//fun这个函数作用域 访问了另外一个函数 fn 里面的局部变量 num 此时就产生了闭包
//被访问的变量所在的函数就是闭包函数
let f=fn();
//fn()会 return fun函数
//相当于:let f = function fun(){
// console.log(num);
// }
f();
//f()函数调用,就会执行到fun函数上面去,因为fun函数在fn中,所以可以访问 fn 的num变量
//因此实现了在全局中访问了局部变量
f()
//一般来说fn函数执行完了里面的变量就会销毁,但是它把返回函数fun存在了 f 中,后面 f 还要调用,就不会销毁
</script>
高阶函数和闭包的简单理解
最新推荐文章于 2023-06-11 00:12:43 发布