当前位置:首页 > 开发 > Web前端 > JavaScript > 正文

javascript之闭包

发表于: 2014-12-13   作者:astheitgirl   来源:转载   浏览:
摘要: 1.概念:其局部变量在函数调用结束之后继续存在。 2.前提:嵌套函数 function f(){ function fn1(){}; } 3.分析理解嵌套函数: function f(){ function g(){ print 'g is a function' }; g();//生成Call-g对象 } f();//javas
1.概念:其局部变量在函数调用结束之后继续存在。
2.前提:嵌套函数
function f(){
  function fn1(){};
}

3.分析理解嵌套函数:
function f(){
  function g(){
    print 'g is a function'
  };
  g();//生成Call-g对象
}
f();//javascript中对函数的调用会隐式生成Call对象,此处生成Call-f对象,Call-f的属性包括f和g,此对象在函数调用结束后被销毁。Call-f对象被销毁的时候,相关的属性也被销毁。
==>g is a function


但是。。。。

function f(){
  var n = 123;
  function g(){
    console.log('n=' + n);
  };
  return g;
}
var fn1 = f();
fn1();

函数f在调用的时候生成的Call-f对象的属性g所引用的Function被fn1引用,只要fn1存在,被fn1引用的Function就存在,Call-f对象也就存在。这就导致了即便是离开了f,还是可以引用f中的变量n。<--- 此为闭包

javascript之闭包

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号