闭包大家项目中很多地方都会用到,可以说是已经无意识影响性能了。
什么是闭包?
函数嵌套函数,内部函数可以访问外部函数的变量,内部的变量不会被垃圾回收机制所回收,利用闭包可以突破函数的局部作用域,向外部传递函数内部的方法和变量。想不到俺也能说出来这么专业的话了。
闭包有什么用?
1.可以通过内部函数访问外部函数的变量
2.让局部变量始终保存在内存里,避免被全局变量污染,也避免被垃圾回收机制所回收
看一个小栗子:
function 外部函数(){
name = 1;
function 内部函数(){
console.log(this.name)
}
内部函数()
}
外部函数() // 1
// 接下来把内部函数可访问的那么注释了,再刷新页面,发现还是1
function 外部函数(){
// name = 1;
function 内部函数(){
console.log(this.name)
}
内部函数()
}
外部函数() // 1
这就是闭包的影响,如果大量使用的话,就会造成内存泄露,严重则浏览器崩溃,甚者电脑原地爆炸。
所以我们需要在不需要它的时候,把这个内存给释放掉。
function 外部函数(){
name = 1;
function 内部函数(){
console.log(this.name)
}
内部函数()
内部函数=null
}
外部函数()
这个垃圾代码只是肯定是没有实用性的,只是看一下,算了,俺都没看懂。