思考一个问题:一般的,函数内部能够轻易地访问到函数外部的变量,那么,函数外部怎么能够访问到函数内部呢?
用【闭包】
【闭包的本质】就是:连接函数内部和函数外部的桥梁。
我们之所以能够用闭包实现函数外部访问函数内部变量,是因为闭包实现了函数外部变量的永久化,即将函数外部变量永久性的存储到了内存中。
【内存泄漏】:上面提到,闭包会将变量永久的存储在内存中,大量使用闭包,会占用大量的内存,内存就被这样占用了,好像内存泄漏了一样。
闭包还能解决【变量污染】问题。
变量污染:如果全局定义了一个a变量,那么就不能再定义a变量,在工程中,我们往往需要定义若干多的变量,多就很难避免重复和杂乱,好像变量被污染了一样。而被闭包使用过的变量,也就是存储在外部函数的变量,外部函数一经执行,变量便被销毁,所以,不同的外部函数里是可以定义相同的变量的。
闭包的应用:防抖,节流
【防抖】:只执行最后一次。就像食堂阿姨的手,一抖再抖,但只会给你一勺。
【节流】:每隔一段时间执行一次。