欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

闭包的概念 博客分类: 转载  

程序员文章站 2024-03-13 11:13:51
...

链接:https://www.ibm.com/developerworks/cn/linux/l-cn-closure/

1.自带运行环境,方便调用

  例子:

 

//定义一个循环10次的函数
function do10times(fn)
 for i = 0,9 do
 fn(i)
 end
end

//定义一个累加函数
sum = 0
function addsum(i)
 sum = sum + i
end

//从0累加到9
do10times(addsum)
print(sum)

 

,函数 addsum 被传递给函数 do10times,被并在 do10times 中被调用10次。不难看出 addsum 实际的执行点在 do10times 内部,它要访问非局部变量 sum,而 do10times 并不在 sum 的作用域内。这看起来也是无法正常执行的。而闭包特性就能够突破这种限制,闭包是自带运行环境的一段代码