闭包,防抖,截流
?? 闭包
- 闭包就是能够读取其他函数内部变量的函数,将函数内部和外部连接起来的一座桥梁,即定义在函数内部的函数。
 - 用途
- 读取函数内部的变量
 - 让变量的值始终保持在内存中
 
 - 注意
- 闭包对内存消耗很大,会影响网页的性能,在 
IE中可能导致内存泄漏,在退出函数之前,将不使用的局部变量全部删除 - 闭包会在父函数外部,改变父函数内部变量的值
- 如果把父函数当作对象 
object使用,将闭包当作公用方法Public Method,内部变量当作私有属性private value使用时,不要随便改变父函数内部变量的值 
 - 如果把父函数当作对象 
 
 - 闭包对内存消耗很大,会影响网页的性能,在 
 
?? 防抖
- 一定时间内,函数只会执行最后一次任务
 - 缺点:当用户在指定时间间隔中一直操作,那么 
setTimeout里的函数永远不会执行 
?? 截流
- 一定时间内,函数只执行一次
 - 缺点:如果用户一直操作,那么 
setimeout里的函数会在指定时间间隔后都会执行一次 
?? 防抖截流的区别
- 相同点
- 都用到了 
setTimeout定时器 - 都是在指定时间间隔后执行函数
 - 都是优化高频率执行 
js代码的一种手段 - 都是为了解决数据时时变化而时时请求导致性能差的问题
 
 - 都用到了 
 - 不同点
- 防抖在指定时间间隔里再次调用函数,会清除定时器,重新计时,直到在最新的计时时间间隔里没有调用函数,才会执行定时器里的函数
 - 节流会在指定时间间隔后会执行一次函数,不会清除定时器而重新计时