关于闭包的简单理解

原创 2016年06月02日 12:06:41

最近因为看到很多关于闭包的概念文章,说一下自己的简单理解。

“闭包”就从字面上的意思上来理解,“闭”即是关闭,“包”即是承包。用大白话来说就是这件事我承包了你们就谁也也插手了,相当于做一件事我去做,我负责到底。

在代码里面就是在嵌套函数的地方

func function() -> (Int) {
    var rtm = 1
    
    func addone() ->Int {
        return rtm + 1
    }
    
    
    
    return addone()
}
在<pre name="code" class="objc">function函数里面嵌套一个addone函数,rtm作为function函数的变量,在addone函数里面是可以调用到的,这时候在函数里面调用addone函数,就会执行rtm+1的实现
这个时候就是一个闭包,只负责简单的调用,具体的addone实现以及里面的变量访问全部交给addone去处理就行了。
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: rgb(51, 51, 51); font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px;"><span style="font-family:黑体;margin: 0px; padding: 0px;">在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。</span></p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: rgb(51, 51, 51); font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px;"><span style="font-family:黑体;margin: 0px; padding: 0px;">Peter J. Landin 在1964年将术语闭包定义为<span style="color:#ff0000;margin: 0px; padding: 0px;">一种包含环境成分和控制成分的实体</span>。</span></p><span style="color: rgb(255, 0, 0); font-family: 黑体; font-size: 14px;">闭包是从用户角度考虑的一种设计概念,它基于对上下文的分析,把龌龊的事情、复杂的事情和外部环境交互的事情都自己做了,留给用户一个很自然的接口。</span>

版权声明:本文为博主原创文章,未经博主允许不得转载。

最简单易懂的闭包

一、作用域      js特有的作用域,内部函数可以访问外部函数的参数和变量,这个很美妙哦!      但是有时我们需要验证一个变量或属性的类型时,他就会自动向上查找直到原型,如果有则返回,如果没有则...
  • Alin_leeon
  • Alin_leeon
  • 2016年09月20日 00:40
  • 883

轻松理解闭包

啥是闭包?一个闭包就是一个可以访问外部函数作用域链的一个内部函数。
  • chenmoquan
  • chenmoquan
  • 2016年02月16日 11:45
  • 1936

深入理解Lua的闭包一:概念、应用和实现原理

本文首先通过的例子讲解了Lua中闭包的概念,然后总结了闭包的应用场合,最后探讨了Lua中闭包的实现原理。 闭包的概念 在Lua中,闭包(closure)是由一个函数和该函数会访问到的非局部变量(或者是...
  • MaximusZhou
  • MaximusZhou
  • 2015年03月15日 20:25
  • 7037

js闭包的理解以及闭包中this的理解

javascript 闭包、this 2016-01-25 js pl 闭包其实很好理解,但是由于经常把this和闭包绑在一起,从而加大了理解的难度,如果将他们分开考虑,那就清晰多...
  • u010585120
  • u010585120
  • 2016年07月27日 16:59
  • 3910

深入理解js 闭包

要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。 Js代码  v...
  • java_goodstudy
  • java_goodstudy
  • 2016年07月20日 17:53
  • 2550

如何理解和应用闭包

何为闭包 函数内部又定义了一个函数,这个子函数就可以称为闭包。 闭包的特点 闭包的一个特点就是闭包内部可以引用外部函数的变量。 原理 要理解闭包的原理,最重要的是要理解J...
  • qiupu4667
  • qiupu4667
  • 2017年04月12日 20:26
  • 315

深入理解javascript原型和闭包

原文链接:http://www.cnblogs.com/wangfupeng1988/p/3977924.html 深入理解javascript原型和闭包(1)——一切都是对象 深入理解javas...
  • liliiii
  • liliiii
  • 2015年09月20日 10:54
  • 5101

什么是闭包,我的理解

原文链接   [收藏]     首先,我觉得,一个概念,如果不理解也不影响使用的话,那么,就没必要去理解它、去学习它。闭包就是这样一个概念,你不理解它也能很好的用它。俺这两年写as3程序...
  • Linux7985
  • Linux7985
  • 2015年03月05日 11:18
  • 2062

闭包的深入理解——闭包形成的独立性

闭包的深入理解 一:引子 function makePowerFn(power){ function powerFn(base){ console.log(power); return M...
  • tangxiaolang101
  • tangxiaolang101
  • 2016年07月26日 15:49
  • 735

Scala 中闭包的概念

闭包的实质就是代码与用到的非局部变量的混合,即: 闭包 = 代码 + 用到的非局部变量 例如,我们定义一个值函数 sum: 此时 Scala 解释器提示找不到 y 这个值,这是因为我...
  • u011653701
  • u011653701
  • 2015年05月07日 17:17
  • 1600
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于闭包的简单理解
举报原因:
原因补充:

(最多只允许输入30个字)