« 上一篇下一篇 »

闭包简介

闭包存在于广泛的函数式编程语言的概念中,很多高级语言例如Smalltalk、JavaScript、Ruby还有Python对闭包都有或多或少的支持。因此在.NET平台中,对闭包的支持也不能例外。

闭包从本质上来说,它来源数据概念概念,是指由函数以及与函数相关的上下文环境组合而成的实体。通过闭包,函数与其上下文变量(或称为自由变量,表示局部变量之外的变量)之间建立起关联关系,上下文变量的状态也可以在函数的多次调用过程中持久保持。从作用域的角度而言,闭包有利于信息的隐蔽,私有变量只有在该函数内可见。

在JavaScript语言中,闭包无处不在。在官方概念中,一个拥有变量和绑定了该变量的表达式,就形成闭包。简单地说,在JavaScript中函数内部的子函数将自然形成一个闭包:
 
       <script language="javascript"type="text/javascript">

         function f(){
             x="Hello,Closure.";

             function fx(){
                 alert(x);
             }

             return fx;
         }

         var r =f();
         r();
     </script>
    

闭包体现在JavaScript中,带来的好处同样是对变量的封装和隐蔽,同时将变量的值保存在内存中。同样的情况,也可以发生在.NET。

« 上一篇下一篇 »