闭包就是closure, 意在方法体外访问到方法内的局部变量,因为javascript中的方法中定义的变量对外是不可见的,类似于是私有的,
var a; function access(){ var b = 1; } alert(b); //error取不到值
在上面的alert(b)中是取不到值的,因为不能访问方法内的变量,这时可以通过在方法内嵌套定义方法,来访问方法体内的变量,
function access(){ var b = 1; function avi(){ ++b; } return avi; } var test = avi(); alert(test());
上面这种方式可访问到方法内部的私有变量。
附闭包的定义:
- 闭包就是函数的局部变量集合,只是这些局部变量在函数返回后会继续存在。
- 闭包就是就是函数的“堆栈”在函数返回后并不释放,我们也可以理解为这些函数堆栈并不在栈上分配而是在堆上分配
- 当在一个函数内定义另外一个函数就会产生闭包