闭包
概述:闭包就是在函数内返回一个函数,内部函数有外部函数的引用,这个结构就称为闭包.
函数的预编译阶段
先开辟一内存空间
将对应的代码块放在空间上
函数的执行阶段
讲对应的函数开辟的空间放在栈上
执行栈就开始执行对应的函数对应的空间的代码块
这个代码如果需要开辟空间 它就在这个函数的内存空间上开辟
当你不需要这个函数的时候,对应的函数的内存空间就会被回收,那么里面的代码开辟的空间就被回收了
闭包的优劣
优势
内部函数拥有外部函数参数和变量的引用,使用我们的参数和变量的作用范围被扩大.
对应的参数不被回收,在使用的时候就不需要重新开辟空间,速度更快.
作为缓存
劣势
内部函数要一直保持对外部函数里面参数和变量的引用
因为不会被回收那么对应的内存空间就会一直占用
闭包的应用
防抖(在规定事件内只执行一次 执行最后一次)
节流(在规定事件内执行第一次 减少执行次数)
防抖和节流的区别
防抖执行最后一次 节流执行第一次
防抖在规定时间内只执行一次 节流是在规定时间内减少对应的执行次数
防抖对应的开始下一次先要清除上一次 节流开始下一次先要判断上一次是否执行完毕
函数柯里化 (将多个参数的函数拆分为多个单参数的函数 可以自由的组合)
核心就是参数没有够返回对应的函数 参数够了返回结果