您的位置:首页 > 其它

关于“外部的局部变量”

2011-03-29 15:44 323 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: