码迷,mamicode.com
首页 > 其他好文 > 详细

2016-7-30 闭包

时间:2016-07-30 22:36:38      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

闭包

  • 函数内部再定义一个函数,由此函数来使用函数(父)的局部变量

使用场景,比如这个局部变量的值要一直使用,则这是一个很好的保存该值的方法

  function f1(){
    var n=999;
    nAdd=function(){n+=1}
    function f2(){
      alert(n);
    }
    return f2;
  }
  var result=f1();
  result(); // 999
  nAdd();
  result(); // 1000
  1. 以上的f2函数就是一个闭包
  2. var result = f1(); 实质就是调用f2()
  3. 第一次result()结束之后,f1()函数并没有被回收,所以才会产生第二次result()的结果
  4. f1没有被回收的原因是:

    1)f2函数在f1函数内部(f2依赖f1)

    2)f2被赋值给了全局变量

  5. nAdd也是匿名函数也是一个闭包

原理

    function a() {
      var i = 0;
      function b() {
        alert(++i);
      }
      return b;
    }
    var c = a();
    c();

技术分享

2016-7-30 闭包

标签:

原文地址:http://www.cnblogs.com/juzi-123/p/5721799.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!