JavaScript闭包理解

来源:互联网 发布:p2psearcher同类软件 编辑:程序博客网 时间:2024/06/03 13:52

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

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

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
原创粉丝点击