1.什么是闭包

我个人的理解是:闭包是指函数内部变量和内部函数的作用域与生命周期的规则

function a () {

var x;

function b(){

alert(x);

}

}

这是个简单的闭包示例。

2.内部变量的作用域

函数内部定义变量时,如果用var,则定义的是函数内部变量,否则是全局变量

这里讨论var定义的变量。

此时变量x只在函数a内可以访问,外部无法访问,而b属于a的内部函数,则b可以直接访问x。

这就是闭包中变量的作用域。

3.内部变量的生命周期

当一个变量的引用数为0时,它的内存将可以被回收,否则继续存在

这就是说如果a执行完了,而b的实例还存在,则在b的实例中还有x的引用,那么a将不会被回收。

4.内部函数的作用域

其实函数的作用域和普通变量是一样,只不过这个变量是指向一个函数实例而已

内部函数b的作用域是在a内。

如果a外想访问b则需要将b的实例返回出去。例如:

function a(){

var x;

var b = function(){

alert(x);

}

return b;

}

f = a();

这样就可以通过f来访问内部函数b了。

转载于:https://www.cnblogs.com/kuncai/archive/2010/04/02/1703097.html

javascript闭包小结相关推荐

  1. [转载]深入理解JavaScript闭包(closure)

    最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业.对于初学者来说别说理解闭包了,就连文字叙述都很难看懂.撰写此文的目的就是用最通俗的文字揭开Java ...

  2. 深入理解JavaScript闭包(closure) 【收藏】

    深入理解JavaScript闭包(closure) 原文地址:http://www.felixwoo.com/archives/247  Felix Woo 最近在网上查阅了不少Javascript闭 ...

  3. 【转】深入理解JavaScript闭包(closure)

    文章来源:http://www.felixwoo.com/archives/247 最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业.对于初学者来说 ...

  4. 揭开Javascript闭包的真实面目

    揭开Javascript闭包的真实面目 闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分,本文将用通俗的语言带您深入理解Javascript闭包 ...

  5. Javascript闭包和闭包的几种写法及用途

    好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一些实用的东西,主要将闭包的写法.用法和用途.  一.什么 ...

  6. JavaScript学习总结(十六)——Javascript闭包(Closure)

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.很早就接触过闭包这个概念了,但是一直糊里糊涂的,没有能够弄明白JavaScript的闭包到底是什 ...

  7. 全面理解Javascript闭包和闭包的几种写法及用途【转】

    一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...

  8. 全面理解Javascript闭包和闭包的几种写法及用途

     一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...

  9. JavaScript闭包如何工作?

    您将如何向了解其闭包概念(例如函数,变量等)的人解释JavaScript闭包,但却不了解闭包本身? 我已经在Wikipedia上看到了Scheme示例 ,但是不幸的是它没有帮助. #1楼 我知道已经有 ...

最新文章

  1. iphone4s解锁_苹果手机忘记密码怎么办?iPhone忘记密码解锁恢复方法
  2. rust军用船指令_RUST物品指令清单(英文版)
  3. 平衡二叉树所涉及的一些算法
  4. lisp方格网法计算土方量_CAD土方软件方格网法与三角网法相结合,准确计算土方量...
  5. 回调函数 相当于线程_C++屌屌的观察者模式-同步回调和异步回调
  6. 快速掌握 机器学习(Machine Learning) 常用概念术语,常用算法
  7. 简单测试lambda和linq查找的性能
  8. 从头开始复习css之选择器(中)
  9. com.alibaba.dubbo.rpc.RpcException: Since you are
  10. 程序员代码面试指南 算法与数据结构 大厂经典代码面试题
  11. 大明湖畔昇腾绽放,趵突泉里智能奔涌
  12. elasticsearch 聚合搜索
  13. 2021年中式面点师(中级)最新解析及中式面点师(中级)模拟考试题库
  14. AR手游《悠梦2》再获苹果推荐,下载《网易洞见》可免费试玩
  15. matlab中clc什么意思,MATLAB中clc是什么意思
  16. useRoutes() may be used only in the context of a <Router> component.
  17. sublime3编程c语言,Sublime Text 3 实现C语言代码的编译和运行(示例讲解)
  18. 量化城市︱计算机视觉技术在街道品质量化评估中的应用
  19. 四、完成Teigha.net库对CAD看图的放大/缩小/移动实体等界面操作,图层管理器,以及CAD文件布局的切换功能
  20. Matlab最小面积包围四边形

热门文章

  1. 递归算法设计 —— 选择排序和冒泡排序
  2. 2017哈尔滨ACM CCPC-final 总结
  3. [PyTorch] 基于Python和PyTorch的cifar-10分类
  4. matlab2c使用c++实现matlab函数系列教程-trace函数
  5. win10 Anaconda 安装教程
  6. AD19改变原理图图纸大小(A4改为A3
  7. mysql 物理删除 索引_MySQL 索引重建
  8. (重磅)最快的Hadoop完全分布式运行
  9. windows 安装jenkins
  10. 【BZOJ1417】Pku3156 Interconnect