日期:2014-05-16  浏览次数:20355 次

JavaScript闭包的详细解释 深入理解javascript闭包

javascript闭包(Closure)初探

closure被翻译成“闭包”,感觉这东西被包装的太学术化。下面参考书本和网上资源简单探讨一下(理解不当之处务请留意)。
1、什么是闭包
官方的回答:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
看了上面的定义,如果你不是高手,我坚信你会和我一样愤怒的质问:这tmd是人话吗?
要理解闭包,还是代码最有说服力啊,上代码:


function?funcTest()
{
??
var?tmpNum=100;?//私有变量

??
//在函数funcTest内定义另外的函数作为funcTest的方法函数
??function?innerFuncTest(
??{
???????alert(tmpNum);?
//引用外层函数funcTest的临时变量tmpNum
??}

??
return?innerFuncTest;?//返回内部函数
}

//调用函数
var?myFuncTest=funcTest();?
myFuncTes