作为一名前端,对于闭包肯定不会太陌生,特别是在面试中,肯定不会少。
说来惭愧,自己也当过几次面试官,也问过闭包的问题,但是扪心自问,其实自己也是模模糊糊,并不能很清楚没明白的讲出来。
今天,看到人家文章的启发,(要多输出,都是刚开始啥都写不出来到后面一写就收不住。。。。)于是决定自己也来尝试下,多写写文章,就拿闭包开刀吧,借用功夫里面的一句台词,小鬼,忍你很久了,出来,额。。。。。
闭包,就是函数套函数,不过这样子太粗浅了,上不了台面,容我去百度一番,整理一下思绪,感觉是不是自己想的太复杂了
借用别人的一句总结:闭包指的是:能够访问另一个函数作用域的变量的函数。清晰的讲:闭包就是一个函数,这个函数能够访问其他函数的作用域中的变量。
即闭包就是一个函数,用mdn的话说:函数和对其周围状态的引用捆绑在一起,就构成了闭包。也就是说,闭包可以让你从内部函数访问外部函数作用域。
因为 函数 是 JavaScript 中唯一拥有自身作用域的结构,因此闭包的创建依赖于函数
觉得有一篇文章讲的不错https://www.jianshu.com/p/26c81fde22fb
还有一篇文章,觉得写的也不错https://baijiahao.baidu.com/s?id=1659655584142584805&wfr=spider&for=pc
先放在这儿,后续待研究(收藏了就懂了,狗头,哈哈),主要是看到复杂的东西我就大脑一团浆糊,想睡觉,听从大脑的指示,睡觉先,囧
闭包的作用,可以在外面访问某一个局部变量,可以模拟私有变量,也可以封装一个方法,然后向外暴露一些属性和方法,将内部和外部的环境隔离开来,jQuery就是一个例子
哎,感觉写的不好,不够深刻,未完待续。。。。
其实还有一系列的计划,比如作用域链,比如继承,小样们,都等着我吧。
说实话,看了很多介绍闭包的文章,总感觉没有一种让人幡然大悟,醍醐灌顶的感觉,还是自己没有顿悟啊,加油吧,大叔。。