为了账号安全,请及时绑定邮箱和手机立即绑定

JS闭包的小总结

标签:
JavaScript

说js闭包的有很多,这是一个老生常淡的问题吧,不过我还是想好好的总结一个,用文本的形式发表一下个人小总结。

说到闭包当前先要去了解这二个方面的问题,1,JS中的作用域。2,闭包都会在什么样的场景里使用到。

作用域的通俗理解—— 变量可以被访问到的范围。这里多说一点,在ES5之前是只有全局与函数作用域的,ES6开始新增了块级作用域(可以理解为一对花括号 {} 里, 比如if 、for 语句后面的)

这里还是提一下二个权威的概念:

在红宝书里是这样说的:“闭包是指有权访问另外一个函数作用域中的变量的函数”

在MDN里是这样说的:“一个函数和对其周围状态的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包,也就是说,闭包让你可以在一个内层函数中访问到其外层函数的作用域”

根据以上的二个说法,大概的讲解一下:闭包其实就是一个可以访问其他函数内部变量的函数,即一个定义在函数内部的函数,或者直接说闭包是个内嵌函数也可以,闭包的作用,就是具备实现了能在外部访问某个函数内部变量的功能,让这些内部变量的值始终可以保存在内存中。

闭包产生的本质——当前环境中存在指向父级作用域的引用

要清楚并不是只用返回函数才可以算得上是产生了闭包,只要需要让父级作用域的引用存在就行了。

那总结一下闭包的各种表现形式吧

1,返回一个函数,这很好理解也是闭包经典的表现形式了。

2,在定时器、Ajax请求、事件监听、Web Workers 以及 异步处理中。也就是说只要是以回调函数的方式来体现的,实际上就是在使用闭包。

3,函数作为参数被传递的形式。

4,自执行的匿名函数。(function (){ ... })()


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消