JavaScript闭包理解
2017-01-19 11:25
176 查看
以前总觉得闭包很抽象,很难理解,所以百度一下"闭包"概览,百度的解释是:“闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)”
看了半天,也没有看懂闭包是什么?以下是我对闭包的理解
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 复制代码
看了半天,也没有看懂闭包是什么?以下是我对闭包的理解
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闭包的一些理解
- javascript闭包的理解
- 理解javascript闭包
- 深入理解JavaScript闭包
- 深入理解JavaScript闭包概念
- javascript闭包的深入理解【转:Felix】
- 转载:深入理解javascript闭包
- 理解Javascript闭包(转载理解)
- 关于Javascript闭包的理解(三)
- 深入理解JavaScript闭包(closure)
- 深入理解Javascript闭包(closure)
- 深入理解JavaScript闭包概念
- 深入理解Javascript闭包
- 简单易懂的JavaScript闭包理解
- 深入理解JavaScript闭包(closure)
- 深入理解Javascript闭包(closure)
- 彻底理解Javascript闭包
- 深入理解Javascript闭包(一)
- 【好】深入理解javascript闭包
- 循序渐进理解javascript闭包