js闭包知识

一:闭包的三大要素:
1.函数存在嵌套关系
2.内部函数必须引用外部函数的局部变量
3.外部函数必须调用
二:闭包优点:
1.能够在函数外部 访问到内部的变量(原本函数外部无法访问函数内部的局部变量,但函数内部的函数可以访问本函数内的局部变量)
2.延长局部变量的生命周期(本质:)
var fnn2 = fn() 本来执行一次内部变量a就应该销毁,但是因为被赋值了有引用关系,局部变量就一直保存
三: 闭包的缺点
1.滥用闭包,其执行环境一直都在 造成内存溢出 和内存泄漏
四:闭包的生命周期
1.产生:闭包在完成嵌套函数(成立的三大要素)时就产生了(而不是调用)
2.死亡:接收闭包的变量称为垃圾对象时 (null)
五:闭包缺点的解决
1.内存泄漏:内存无法释放
2.内存溢出:内存被撑爆
3.解决:f=null ;让闭包机制清除,f指接收外部函数的那个变量
六:闭包作用域:在函数被创建的地方开始向上寻找
在这里插入图片描述
1.函数作为返回值被返回
js闭包知识_第1张图片

2.函数作为参数被传递
js闭包知识_第2张图片

七:闭包的应用场景
1.做缓存
js闭包知识_第3张图片

2.节流,防抖:限制函数的执行次数
3.节流throttle:减少一段时间的触发频率(规定多久以后才能触发一次)
①定时器版本
js闭包知识_第4张图片

②时间戳版本:
js闭包知识_第5张图片

4.防抖debounce:通过setTimeout的方式,在一的时间间隔内,将多次触发变成一次触发,只执行最后一次
注意this指向和参数arguments问题
js闭包知识_第6张图片

你可能感兴趣的:(json)