闭包
定义:当内部函数保存到外部时,就会产生闭包;闭包会导致 原有作用域链不释放,造成内存泄漏
<script>
function a (){
var aaa = 100
function b(){
var bbb =200
console.log(aaa)
}
return b
}
var demo = a()
demo()
</script>
AO:执行期上下文
GO:全局的执行期上下文
demo()执行,也就是a()执行,a函数执行时候,其拥有自身的AO和全局的GO,当执行到函数b,b声明,此时b 直接获得了a的执行期上下文,所以此时b拥有了,自己的AO,a的AO,全局的GO;执行到最后一行的时候,需要把b 返回出去,这个时候,b将其身上所有返回出去,而此时,本该由于函数执行完毕,函数a的AO本该被销毁,现在却被保存到外部,导致原本应该被释放的a的AO未释放,占了内存,导致可用的内存更少了 因此形成了内存泄漏