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