闭包概念
详细解释
《javascript 高级程序设计》中闭包的概念:闭包,其实是一种语言特性,它是指的是程序设计语言中,允许将函数看作对象,然后能像在对象中的操作般在函数中定义实例(局部)变量,而这些变量能在函数中保存到函数的实例对象销毁为止,其它代码块能通过某种方式获取这些实例(局部)变量的值并进行应用扩展。
简单解释
闭包就是一个访问父函数局部变量的函数
闭包目的
闭包是为了让变量长久保存(防止垃圾回收)的同时不会造成全局污染。
闭包代码
function a() {
let i=0
return function () {
i ++;
console.log(i)
};
}
var x=a()//a()执行的结果就是闭包
x() //1
x() //2
闭包缺点
使用闭包会导致内存泄漏。闭包会携带包含其它的函数作用域,因此会比其他函数占用更多的内存。
总结
每当我们学习一项技术的时候,应该知道其利弊,并且灵活使用,在常见业务场景中遇到一些人都是为了让变量不全局污染,有块级作用域,而这时候可以使用es6的let或者const,不要为了使用闭包而用闭包。