闭包
1. 函数里面嵌套函数,可以多层嵌套,返回值为函数
2.内部函数可以调用外部函数的内容 作用域链
3.里面的参数和变量不会被垃圾回收机制回收
闭包案例
function fn(a){
//参数a 这个参数a是不会被销毁的(坏处:内存占用)
return function(){
console.log(a)
}
}
console.log(fn("hello")); //调用外部函数 (好处:内部的变量不会被外部污染)
//好处
1.内部的函数可以访问外部的内容
2. 外部不能访问内部函数的变量
2.1 优点,保证内部函数变量的私有性(不会被外部内容污染)
2.2缺点 一直保持对这个变量的引用(效率低)
3.里面的变量和参数不会被垃圾回收机制回收
3.1 优点 可以作为缓存
3.2 缺点 占用内存
闭包的应用案例
防抖
在一定时间内进入执行的函数 会被忽略掉只剩一个(避免函数重复调用)
应用场景 表单输入验证 等我有段时间没输入他就会验证
wait 区间内执行一次
function antishake(func,wait){//传入参数 为执行的方法 间隔的时间
let timer = null //声明延时器对象为空
return function(){
clearTimeout(timer) //清除延时器
timer = setTimeout(()=>{//延时器调用