最近在网上查阅了很多Javascript闭包(closure)相关的资料,写的大可能是很是的学术和专业。对于初学者来讲别说理解闭包了,就连文字叙述都很难看懂。撰写此文的目的就是用最通俗的文字揭开Javascript闭包的真实面目。
1、什么是闭包?
“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(一般是一个函数),于是这些变量也是该表达式的一部分。
相信不多有人能直接看懂这句话,由于他描述的太学术。我想用如何在Javascript中建立一个闭包来告诉你什么是闭包,由于跳过闭包的建立过程直接理解闭包的定义是很是困难的。看下面这段代码:
function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c();
这段代
