闭包的理解
- 函数作用域
在js中,一个函数要执行时就会在内存里创建一个独立作用域,在该作用域里可以对变量进行操作,跳出该函数作用域,在全局里就找不到该变量
而闭包的出现就解决了在全局里也可以访问到函数作用域内部的变量
- 内存回收
内存回收是指用不到的内存空间进行清理
function(){
var b=2;
return function(){
console.log(b)
}
}
在如图的闭包里b在内部的function里被引用就意味着被使用,因此不会对该变量或对象进行回收
- 作用域继承
在上图中,对于外部函数(大盒子)它无法访问内部函数(小盒子),但小盒子却可以无限次的访问外部函数的作用域,是一种继承的关系。大盒子不可以访问小盒子,小盒子可以一直访问大盒子
- 什么是闭包
在函数中定义一个函数,这个内部函数一直保持对外部函数作用域的访问,这样就可以一直保持私有变量不受干扰,这种模式就称为闭包
- 闭包的作用
通过一系列方法使得函数内部的变量(局部变量)转化为全局变量