JS闭包的小总结
标签:
JavaScript
说js闭包的有很多,这是一个老生常淡的问题吧,不过我还是想好好的总结一个,用文本的形式发表一下个人小总结。
说到闭包当前先要去了解这二个方面的问题,1,JS中的作用域。2,闭包都会在什么样的场景里使用到。
作用域的通俗理解—— 变量可以被访问到的范围。这里多说一点,在ES5之前是只有全局与函数作用域的,ES6开始新增了块级作用域(可以理解为一对花括号 {} 里, 比如if 、for 语句后面的)
这里还是提一下二个权威的概念:
在红宝书里是这样说的:“闭包是指有权访问另外一个函数作用域中的变量的函数”
在MDN里是这样说的:“一个函数和对其周围状态的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包,也就是说,闭包让你可以在一个内层函数中访问到其外层函数的作用域”
根据以上的二个说法,大概的讲解一下:闭包其实就是一个可以访问其他函数内部变量的函数,即一个定义在函数内部的函数,或者直接说闭包是个内嵌函数也可以,闭包的作用,就是具备实现了能在外部访问某个函数内部变量的功能,让这些内部变量的值始终可以保存在内存中。
闭包产生的本质——当前环境中存在指向父级作用域的引用
要清楚并不是只用返回函数才可以算得上是产生了闭包,只要需要让父级作用域的引用存在就行了。
那总结一下闭包的各种表现形式吧
1,返回一个函数,这很好理解也是闭包经典的表现形式了。
2,在定时器、Ajax请求、事件监听、Web Workers 以及 异步处理中。也就是说只要是以回调函数的方式来体现的,实际上就是在使用闭包。
3,函数作为参数被传递的形式。
4,自执行的匿名函数。(function (){ ... })()
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦