闭包的概念

链接: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 的作用域内。这看起来也是无法正常执行的。而闭包特性就能够突破这种限制,闭包是自带运行环境的一段代码

猜你喜欢

转载自542255641.iteye.com/blog/2396253