前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >5分钟学会javascript闭包(二)

5分钟学会javascript闭包(二)

作者头像
web前端教室
发布2018-02-06 10:45:45
4470
发布2018-02-06 10:45:45
举报
文章被收录于专栏:web前端教室web前端教室

昨天说了闭包很牛逼,很有用,今天来讲一下,它有什么用处。

它的用处主要有二个,

1,读取函数内部的变量;

2,可以让这些变量的值一直保存在内存中,(内存泄露就是这么产生的)

口说无凭,先上代码:

颤抖吧,闭包!!

(哈哈哈,我很喜欢这种抖的感脚)

在上面的代码中,s1是s2的父函数,那么s1的局部变量对于s2就是可读的,

而xx实际上就是闭包s2函数了,

代码中,xx一共运行了二次,而它的值先是99,然后是100。

这说明s1的局部变量n,一直在内存中没有被清除。。

真相只有一个:

1、s1函数的局部变量n,对于s2函数来讲就是一个全局变量了;

2、s2函数内的n就导致,s2与s1的局域变量n有了引用关系,

3、而s2又依赖于s1,因此在运行中,s1也一直在内存中,不会被垃圾回收。

4、testval,它没有用var声明,所以它是一个真正的全局变量,同时它也是一个匿名函数,而匿名函数本身就是闭包的一种。

5、可以在作用域链的最外层操作testval,因为它是真正的全局变量,所以它相当于是一个setter方法,可以穿透s1函数,从最外层直接对它的内部变量n进行操作。

这就是闭包的,,,,基本情况啦,

话不说满,省得被打脸,哈哈,,

今天就到这,下次再聊

点这里:5分钟学会javascript闭包(一)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 web前端教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档