闭包
什么是闭包?
闭包是有权访问其它函数作用域内的变量的一个函数
在js中,分全局作用域与局部作用域,在es6以前局部作用域也就是函数作用域,在函数执行完以后作用域就会销毁,内存释放,但是闭包是建立在函数内部的子函数,由于其可以访问上级作用域的原因,即使上级函数执行完,作用域也不会被销毁,此时的子函数就是闭包,便有了访问上级作用域中变量的权限,即使上级函数执行完以后作用域内的变量也不会被销毁
闭包解决了什么问题呢?
本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。由于闭包可以缓存上级作用域,这样函数外部就可以访问到函数内部的变量
应用场景
ajax请求的回调 事件绑定的回调 setTimeout的回调
闭包的优缺点
优点:让代码更加规范、简洁 缺点:使用过多的闭包导致js引擎的垃圾回收机制不能回收释放内存导致内存消耗过大造成内存泄漏的问题