以前总觉得闭包很抽象,很难理解,所以百度一下"闭包"概览,百度的解释是:“闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)”

看了半天,也没有看懂闭包是什么?以下是我对闭包的理解

1.普通函数、变量访问作用域

以上普通函数的调用fn被调用了两次,变量b却没有累加??

对于函数f1变量b在函数外部是不能访问的

如若实现局部变量b的累加,并且可以访问该怎么做呢?

2.闭包概念:

函数的嵌套,闭包就是能够读取其他函数内部变量的函数。

变量长期驻留在内存中

以上可以看出,父函数f1中的变量b对于子函数f2是可访问的或者说是可见的,父函数f1调用一次,意味着变量b始终都是同一变量,f2中的b++,实现了对同一变量的自加,

对于子函数f2形成一个最简单的闭包

3.闭包在对象中应用

4.解决获取标签索引问题

需求:当点击点击标签li时,获取标签li的内容及索引

 a.理想中的方案一<未使用闭包>

效果:未解决获取到当前点击标签对应索引值,获取到的索引总是for循环完毕后的索引i

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

b.解决方案二<使用闭包>代码如下:

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

JavaScript闭包理解相关推荐

  1. JavaScript闭包理解【关键字:普通函数、变量访问作用域、闭包、解决获取元素标签索引】...

    一.闭包(Closure)模糊概述 之前总觉得闭包(Closure)很抽象而且难理解,百度一下"闭包"名词,百度的解释是:"闭包是指可以包含自由(未绑定到特定对象)变量的 ...

  2. 我我我我终于理解闭包了,哈哈哈哈(仰天长啸)(JavaScript闭包理解)

    想要理解闭包.首先得了解JavaScript中的三个东西. 1,函数内部可以访问的范围. 就是说,函数内部能访问,自身内部以及自身外层的变量.(这个很好理解,大部分语言都是如此) 如: var a = ...

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

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

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

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

  5. 让你分分钟理解 JavaScript 闭包

    原文:https://www.cnblogs.com/onepixel/p/5062456.html 让你分分钟理解 JavaScript 闭包 闭包,是 Javascript 比较重要的一个概念,对 ...

  6. 全面理解Javascript闭包和闭包的几种写法及用途--转载自https://www.cnblogs.com/yunfeifei/p/4019504.html...

    全面理解Javascript闭包和闭包的几种写法及用途 好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一 ...

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

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

  8. javascript深入理解js闭包[转]

    一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...

  9. javascript深入理解js闭包

    一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...

  10. 深入理解Javascript闭包(一)

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用于.变量作用域包括 ...

最新文章

  1. 人脸对齐--Face Alignment by Explicit Shape Regression
  2. 2020秋季学期教学委员会第一次全体会议
  3. 为你的亚马逊S3 bucket加个安全盖
  4. JAVA :RESTLET开发实例(一)基于JAX-RS的REST服务
  5. ubuntu python3.7修改默认pip版本_Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
  6. MTK 驱动开发(18)---LCD 参数理解
  7. pycache怎么用_如何用python3输出dos命令?
  8. 商汤发布L4级接驳小巴和智能路侧感知解决方案,加速V2X产业创新
  9. 统计报表币种金额_海关总署就全面发布以人民币计价统计数据答问
  10. 2008中国优秀无线互联网站点50强
  11. 课程体系包括哪些要素_大数据课程体系和课程内容建设研究
  12. tushare接口get_realtime_quotes报错:AssertionError: 33 columns passed, passed data had 34 columns
  13. Springboot毕业设计毕设作品,人脸识别签到考勤系统设计与实现
  14. hdmi网线延长器_HDMI单网线延长器HE200使用教程
  15. JAVA工程师待遇如何
  16. linux安装ifconfig
  17. [再寄小读者之数学篇](2014-06-21 向量公式)
  18. 【php】注册系统和使用Xajax即时验证用户名是否被占用
  19. 刷微博粉丝工具发布及原理解说
  20. 最常用的邮箱的SMTP

热门文章

  1. 渗透测试实战分享—从app到网站沦陷
  2. golang实现子网掩码和网络位长度相互转换
  3. dell服务器开机进系统黑屏,dell电脑开机黑屏,教你几步解决_故障
  4. 手势解锁java后端设计_自己定义九宫格手势解锁
  5. tftp服务器上传文件至华三ac,ftp和tftp 上传文件到h3c交换机
  6. UnitedPlugins发布终极Bass效果器:QuickBass
  7. 马哥Linux命令大全
  8. python nlpir_中文分词工具--NLPIR/ICTCLAS的Python版本使用
  9. 全国计算机二级C语言考试难不难?应该怎么备考?
  10. 风云第三部 第533回 乌云蔽日 力掌乾坤