zoukankan      html  css  js  c++  java
  • 闭包及其使用

    闭包及其使用

    闭包是一个很有趣的主题,当在一个函数 outter 内部定义另一个函数 inner,而 inner 又引用了 outter 作用域内的变量,在 outter 之外使用 inner 函数,则形成了闭包。描述起来虽然比较复杂,在实际编程中却经常无意的使用了闭包特性。

    http://www.ibm.com/developerworks/cn/web/1006_qiujt_jsfunctional/
    清单 8. 一个闭包的例子
    function outter(){ 
      var n = 0; 
      return 
    				 function (){ 
      return n++; 
     } 
     } 
    
      var o1 = outter(); 
     o1();//n == 0 
     o1();//n == 1 
     o1();//n == 2 
      var o2 = outter(); 
     o2();//n == 0 
     o2();//n == 1

    匿名函数 function(){return n++;} 中包含对 outter 的局部变量 n 的引用,因此当 outter 返回时,n 的值被保留 ( 不会被垃圾回收机制回收 ),持续调用 o1(),将会改变 n 的值。而 o2 的值并不会随着 o1() 被调用而改变,第一次调用 o2 会得到 n==0 的结果,用面向对象的术语来说,就是 o1 和 o2 为不同的 实例,互不干涉。

    总的来说,闭包很简单,不是吗?但是,闭包可以带来很多好处,比如我们在 Web 开发中经常用到的:

  • 相关阅读:
    NOI 2020 游记
    BJOI2020 游记
    行列式
    CSP-S 2019 游记
    类欧几里得算法
    有关二次离线和 Yuno loves sqrt technology II
    NOI2019 游记
    CTS 2019 Pearl
    BJOI2019 游记
    2017 山东二轮集训 Day7 国王
  • 原文地址:https://www.cnblogs.com/zjsct/p/3604961.html
Copyright © 2011-2022 走看看