js中的闭包概念常常让学习js的新人烦恼不已,但是即使不知道闭包为何物的js新手一样在不知不觉中使用这个概念。
简单的说就是js的function被定义的时候,所有“能看到的对象”,这个function内部都是可见的,可以访问的。
举例而言:
var globelvar = {};
function function1(){
var localvar1;
function function2(){
var localvar2;
function function3(){
var localvar3;
}
globelvar.function3 = function3;
}
function2();
globelvar.function2 = function2;
}
function1();
function function4(){
var localvar4;
}
变量 globelvar 四个方法都可以访问到。
变量 localvar1 可以被 function1 function2 function3 三个方法访问到,function4无法访问。
变量 localvar2 可以被 function2 function3 访问到,function1 function4无法访问。
变量 localvar3 只可以被function3访问到。
变量 localvar4 值可以被function4访问到。
这种变量的可见性可以概括为方法定义的时候,在方法的位置能"看到"的变量,这个方法都是可以访问的。
这种可见性就是闭包。
闭包的现象和概念看上去就这么简单。
转载于:https://blog.51cto.com/rainfall/1344185