语言中的闭包
2016-07-26 11:04
218 查看
在函数调用过程中,如果需要改变一个参数的值则需要通过引用传递或指针传递地址的方式进行,其实也是按值传递,只不过传递的是需要改变的变量地址而已,那么可不可以将被调用的函数内部局部变量的状态也可以保存起来呢?当调用这个函数时,变可以继续上次调用过程中所保留的状态,并进行恢复,这种保留函数调用上下文的方法就是“闭包”。在许多函数式编程语言尤其是带有垃圾回收特性语言中,都支持闭包功能,闭包其实就是将函数执行的上下文进行保存,当再次调用时,又将其进行恢复。由于该函数的局部状态被保留并被多次调用,这也就类似于数学中的闭包。 支持闭包特性通常需要一个嵌套函数,通过执行嵌套函数来改变所在父函数的局部变量状态,父函数保存调用上下文状态,而嵌套函数负责修改状态的改变。闭包可以看做连接程序流程的管道。
转载
相关文章推荐
- 深入理解PHP之匿名函数
- 最后一次说说闭包
- Ruby中使用Block、Proc、lambda实现闭包
- LUA中的闭包(closure)浅析
- Lua中的闭包学习笔记
- C#中函数的创建和闭包的理解
- 深入理解javascript作用域和闭包
- javascript作用域和闭包使用详解
- 谈谈JavaScript中的函数与闭包
- 细品javascript 寻址,闭包,对象模型和相关问题
- JavaScript中的闭包原理分析
- 浅谈javascript中的闭包
- 学习javascript的闭包,原型,和匿名函数之旅
- javascript 闭包详解
- JavaScript 匿名函数和闭包介绍
- JavaScript 闭包深入理解(closure)
- 深入理解JavaScript 闭包究竟是什么
- 让你一句话理解闭包(简单易懂)
- 谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
- 解决js函数闭包内存泄露问题的办法