论坛首页 Web前端技术论坛

简单理解闭包概念,大家看看有没有问题

浏览 1782 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-06-24  
被外部函数作为返回值返回的内部函数会保留外部函数的局部变量的特性叫做闭包。

在正常情况下,在外部函数执行完成后,作为外部函数的局部变量v和v2应该已经失效,因为闭包的特性存在,innerMethod1、innerMethod2这两个方法仍然可以访问外部方法的局部变量。

代码如下,欢迎指点 
function outMethod(v){
    var v2="=="
    return function (){
        alert(v2+v+v2);
    }
}

var innerMethod1=outMethod("i am 1");
var innerMethod2=outMethod("i am 2");

innerMethod1();
innerMethod2();
   发表时间:2008-06-24  
其实,每个函数运行时,都会产生一个闭包,其最重要的本质就是,可以保持数据……
0 请登录后投票
   发表时间:2008-06-24  
笨笨狗 写道
其实,每个函数运行时,都会产生一个闭包,其最重要的本质就是,可以保持数据……


闭包给我的感觉就是一个函数的内部子函数要是外部对它有引用或调用,这个内部函数还可以使用父函数

的局部变量就说明了形成了一个闭包,这个闭包里面保存的就是父函数的内部变量,给子函数调用使用。


按照你说的话,每个函数都会形成闭包,不同是的普通函数运行结束后会将这个闭包里面的局部变量释放,而有内部函数被外部函数调用或引用的情况下,闭包内的局部变量不会被释放。不知我理解的是否正确。
0 请登录后投票
   发表时间:2008-06-24  
所有函数 都是闭包。。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics