当前位置:首页 > 开发 > 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

    震惊

    震惊

编辑推荐
1 什么是闭包? 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的表达式(通常这是一
最近去面试了一家企业,结果非常灰心丧气,于是周末给自己定了一个目标 学好一门,学精通一门。不求
官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而
一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两
一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两
今天我们从内存结构上来讲解下 javascript中的闭包概念。 闭包:是指有权访问另外一个函数作用域中
最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业。对于初学者
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 下面
什么是闭包 闭包是指有权访问另一个函数作用域中的变量的函数(有点拗口吧),简单点就是在一个函数
作为第一次接触闭包,就将自己的理解及查询相关信息进行总结,在谈论闭包之前,先了解几个相关知识
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号