以前总觉得闭包很抽象,很难理解,所以百度一下"闭包"概览,百度的解释是:“闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)”
看了半天,也没有看懂闭包是什么?以下是我对闭包的理解
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 复制代码