百度百科中对闭包的定义:

  闭包是可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义。“闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境 (作用域)。在 Scala、Scheme、Common Lisp、Smalltalk、Groovy、JavaScript、Ruby 和 Python,objective c 等语言中都能找到对闭包不同程度的支持。

占岭对闭包的定义:

   对于函数A,它内部有子函数B,A函数的返回值为函数B,当A函数的实例被建立之后,由于还存在着对函数B的引用,所以函数B中的值还会存在于内存中,这时函数B的这种浪费内存的行为我们称为闭包!

在理解闭包之前,我们先来看一下JS变量的作用域吧:

所为使用域就是一个对象或者变量的有效性的范围,下面的代码中详细的说明了这一点

     //变量的作用域function bobo() {var a = 1; //只在bobo函数体中有效b = 1; //声明了一个全局变量,在整个<script>块中有效function boboSub() {  //声明一个函数,它只在bobo函数中有效var c = 1; //只有boboSub函数声中有效c = c + a; //子函数中可以使用上级函数的变量
            }}

通过一个代码来理解一下闭包吧:

这个例子中有变量i,它是父函数a中的一个变量,它对子函数b是可见的,在函数b中对它进行累加操作,最后函数a将函数b返回,而由于函数a对函数b

存在着地址上的引用,所以,当函数a没有被释放时,函数b也不会被释放,这虽然是不提供的,但在某种情况下是完成一些需求的最佳方式。即浪费的不一定是不好的。

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

它的结果不是0,而是1,这就是闭合的作用,事实上闭合将局部变量B提升了,默认情况下,我们先把直接访问到函数A的内部函数B,所以闭包还有一个提升变量级别的作用。

  好了,写到这里,Jquery真的不难系列也就写完了,匆匆忙忙,时间不知不觉过的很快,在这个系列中,我充分投入了进入,可能已经不是代码这么简单了,可能在写作的时候带有一些感情的色彩,这可能叫身临其境吧,又或者我走火入魔了,以至于我已经失眠3天了,呵呵!

祝大家早日学有所成吧,好好工作,好好生活吧!就到这吧。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:Jquery真的不难~第八回 JS的闭包问题,如需转载请自行联系原博主。

Jquery真的不难~第八回 JS的闭包问题相关推荐

  1. Jquery真的不难~第五回 JQ中的遍历(遍历中的性能知识点)

    回到目录 上一回主要说的是JQ中的几个主要的事件,文章的最后还介绍了匿名函数的使用,恩,今天主要来看一下JQ中的遍历,就是在JQ中进行循环操作以及在遍历时要注意的地方. 前言 要讲遍历就要说数组,你不 ...

  2. JQuery真的不难~第六回 JQ中的异步调用方式

    回到目录 前言 今天主要讲一下JQ中的异步编程,它将ajax进行封装,在进行异步请求时显得非常容易,无论是GET,POST方式,还是text,xml,javascript,json等数据通讯都是那么的 ...

  3. axure删除的页面怎么恢复_微信删除好友怎么找回?快速恢复,真的不难

    微信删除好友怎么找回?生活中经常会因为一些鸡毛蒜皮的小事和好友发生争吵,或者是因为一些三观和见解不同会发生一些小矛盾,然后就删除了好友.其实过了很长时间以后再想起这档事情,觉得完全没有必要,一时的生气 ...

  4. jQuery是一个非常优秀的js库

    若有侵权随时可以联系作者删除 jQuery学习目录 一.前言 二.学习目标 三.优点分析 四.jQuery基础知识 (一)jQuery(load和read的区别) (二)jQuery选择器 (1).j ...

  5. 少儿学习编程课程是否真的适合七八岁的低龄儿童[图]

    2019独角兽企业重金招聘Python工程师标准>>> 少儿学习编程课程是否真的适合七八岁的低龄儿童[图]: 天下熙熙皆为利来,天下攘攘皆为利往. 这几年来,乐高教育机构在国内如同雨 ...

  6. 相信我,SDRAM真的不难(九)----基于SDRAM缓存的串口传图综合实战(UART + SDRAM + VGA)

    写在前面 本文是SDRAM系列文章的第九篇,前面八篇已经实现了一个简单的SDRAM控制器.正所谓光说不练云玩家,接下来我们搞搞实战,真正把SDRAM给用起来. 本文将结合UART模块.VGA模块.SD ...

  7. 轻量级的jQuery表单验证插件 - HAPPY.js

    为什么80%的码农都做不了架构师?>>>    日期:2012-9-14  来源:GBin1.com 在线演示  本地下载 功能强大的表单验证插件很多,以前我们介绍过validati ...

  8. cropbox php,jQuery用户头像裁剪插件cropbox.js实例分享

    本文主要为大家详细介绍了jQuery用户头像裁剪插件cropbox.js的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 几乎每一个网页是必备图片上传,图片裁剪功能,这 ...

  9. 第八回:品味类型---值类型与引用类型(上)-内存有理

    第八回:品味类型---值类型与引用类型(上)-内存有理 http://www.cnblogs.com/anytao/archive/2007/05/23/must_net_08.html 发布日期:2 ...

最新文章

  1. 数通手稿留档——BGP
  2. VM虚拟机桥接模式无法联网解决办法
  3. redis中的string
  4. CSS之background-position属性
  5. hadoop loadBalance源码分析
  6. 【AI视野·今日NLP 自然语言处理论文速览 第十六期】Tue, 29 Jun 2021
  7. 国内域名商.wang总量统计TOP10:新网居亚 地位不稳
  8. Java关键字、标识符及基本数据类型
  9. MapXtreme2005开发的经典问题
  10. 粤嵌星计划打卡第三十二天(对象的销毁和垃圾收集机制)(java实现一个权限管理系统)
  11. 每天过得很焦虑怎么办?尤其是职场焦虑。
  12. vivo电池损耗指令代码_vivo手机电池换新活动开启,69起即可换新电池
  13. 龙卷风java_程序设计-理解java继承-遁地龙卷风
  14. 【2020年11月】研读和改进淘宝自动下单程序
  15. re-complie_re-中文_
  16. AWS-小型企业-服务架构设计
  17. oracle 定义atp规则,ATP新积分规则详解
  18. 电脑插座,电脑专用插座如何接线?电脑专用插座如何挑选?
  19. 以爱情规律为例,浅谈三段式描述状态机
  20. python1 2 100_GitHub - smm113522/Python-100-Days: Python - 100天从新手到大师

热门文章

  1. AI 系统可帮助医生发现脑动脉瘤
  2. 【一个好的总经理必做的四件事】
  3. 做 AI 大咖在顶级单位之间随兴漂移,好开心!
  4. 免费教材丨第49期:数学基础课程----漫画线性代数、微积分超入门
  5. Pytorch中用于深度学习常见的激活函数
  6. Meta旨在打造世界上最快的人工智能超级计算机
  7. 开始即结束,Meta元宇宙OS要黄?
  8. 终于,LoRaWAN成全球物联网标准!LoRa将拿下LPWAN领域50%市场?
  9. 喜忧参半:我国蜂窝物联网全球占比超过75%
  10. 李飞飞最新演讲全文:机器已能“看懂”图像和视频,但我们仍站在人工智能研究的起点