JavaScript闭包理解

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

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

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 复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值