【第22期】观点:IT 行业加班,到底有没有价值?

关于闭包的简单理解

原创 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>


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

相关文章推荐

简单易理解的闭包

闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 下面就是我的学习笔记,对于Javascript初学者应该是很有用的。 一、变量的作用域 要理解...

理解Javascript的闭包《转》

原文地址: http://coolshell.cn/articles/6731.html 前言:还是一篇入门文章。Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包对于那些使用传统静态语言C/C++的程序员来说是一个新的语言特性。本文将以例子入手来介绍Javascri...
  • goon
  • goon
  • 2012-08-22 14:40
  • 347

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

最简单的例子理解Javascript闭包

理解Javascript的闭包非常关键,本篇试图用最简单的例子理解此概念。 function greet(sth){ return function(name){ ...

深入理解JavaScript的闭包特性如何给循环中的对象添加事件

[size=large][align=center]深入理解JavaScript的[color=indigo]闭包[/size][/color]特性如何给循环中的对象添加事件[/align][/size] 初学者经常碰到的,即获取HTML元素集合,循环给元素添加事件。在事件响应函数中(even...

简单理解JavaScript闭包

很多关于JS的书籍例如《JavaScript权威指南》或者《高程》都把闭包解释的晦涩难懂,萌新们是怎么也看不懂啊!不过别怕,今天我就用很简单的方式给大家讲解下到底什么是闭包。这是一篇面对新手的对于闭包...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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