js闭包探究(防抖节流)
果果o回忆吧
全部回复
仅看楼主
level 11
钟离小暖 楼主
节流(Throttle)函数︓ 对于持续的事件触发,每达到固定时间间隔,(才能去)执⾏事件处理函数
(没达到间隔,不会触发下一次)
防抖(Debounce)函数: 事件触发停⽌后开始计时,在固定时间内不再有事件触发,执⾏事件处理函数
读作似绕头
2021年08月31日 07点08分 1
level 11
钟离小暖 楼主
这样,因为innerbar(函数里返回的对象)赋值了,所以表面上函数结束后应该销毁,但是bar还在用所以就没有销毁,还在用!!!所以被全局变量占用了之后就没有销毁了
2021年08月31日 08点08分 2
level 11
钟离小暖 楼主
我们还是希望变量不销毁,所以是有作用的,但如果是用全局变量,会被污染,可能会重名,可能被别人篡改,又希望可以一直操作,所以就产生了闭包的应用.
【当时定义的函数内变量也只有返回的对象可以操作,然后重新调用一次函数创立对象,还会产生新的,和之前的也互不冲突】
2021年08月31日 08点08分 3
level 11
钟离小暖 楼主
首先,为什么会有闭包?因为在全局作用域创建的是全局变量,函数作用域创建的局部变量,而局部变量有 函数执行完后就被销毁的特点,在使用中我们希望使用完后并不马上销毁,而且希望在外部能够进行操作和访问,就用到了闭包这种方式。
为什么不用全局变量代替
全局变量可以被污染,销毁,任何人都可以调用,而闭包除了函数可以访问它, 其他的访问不了
闭包能够去访问里面的变量最重要的是由于作用域链,函数里套了函数,里面的函数需要用到父级函数的变量。【这里再加】
闭包的副作用:内存泄漏,只要页面不关闭这块内容一直在,垃圾回收不了也不能手动给释放了
2021年08月31日 08点08分 4
level 11
钟离小暖 楼主
那么也还是先看看闭包吧
虽然这么看方法是不对的肯定会忘记的
应用【柯里化】把一个多参数的函数转化为单参数的函数的方法
【因为返回一个函数】
所以用变量把函数存下来,可以弄多个变量这样就互不干扰了
【因为返回一个函数】
所以还可以往函数里再加变量方法什么的。。
实际上因为返回函数也必须得多走一步才能调用。。
2021年08月31日 08点08分 5
1