现在的位置: 首页 > 综合 > 正文

关于“外部的局部变量”

2012年12月05日 ⁄ 综合 ⁄ 共 510字 ⁄ 字号 评论关闭
function newCounter()
    
local i = 0
    
return function()    
        i 
= i + 1
        
return i
    
end
end

c1 = newCounter --①
print(c1())
print(c1())
c2
=newCounter() --②
print(c2())
print(c2()) 

我的理解是

①c1是相当于主函数newCounter的地址,要再执行子程序须用c1()(),不过这样的话 “外部的局部变量i”就没有累加的作用了,因为每个新的c1()都将产生一个新的闭包

②这样出来的c2就相当于产生了一个闭包,或者说把这个潘多拉闭包释放出来了(释放出的内容有产出一个外部的局部变量i,以及将递增的子程序返回给了c2),执行c2就是执行递增,并且“外部的局部变量i"相当于c2里面的全局变量.

 

这样说吧,类似在c2这个点,

由<div id=c2"></div>

变成了(新增了一个代码块)

<div id="c2">

<div>这里有i 还有代码函数,相当于加了个结点进来,i作用于此div块,所有c2调用将会影响i,也就是闭包</div>

</div>

抱歉!评论已关闭.