这段时间,一直被JS中 闭包
这个问题所困扰,也在网上找了许多文章,但总感觉不够清晰明了。
直到今天,我想说,我好像真的搞懂闭包了!
写这篇文章,是想记录一下。
但是我并不打算长篇大论像很多文章一样,又重新把闭包给讲一遍,因为已经有非常经典的资料讲的很明白了。而且,越是比较抽象的东西,就越需要看经典的书籍资料,从而形成自己的理解。
所以,我想分享的是,作为一个基础不太好的人,我对于闭包这个概念的整个学习过程,看了哪些资料才让我对闭包有了更加深刻的理解;进而借此机会,分享一点我对于如何学习的看法。
关于闭包的学习
如果你同样也是JS基础没那么好,但是又很想弄懂闭包到底是个啥,那么我相信我的学习过程,对你肯定也有帮助。
我主要是看了这两本书:JavaScript高级程序设计(红宝书)
、你不知道的JavaScript 上卷
- 首先,闭包这个概念和函数离不开干系,所以 红宝书 中函数的章节,得好好看一遍
- 然后就看
你不知道的JS 上卷
这本书,把第一部分的内容,按照章节逐章看完,最后等你看完闭包这一章节的时候,一定会和我一样,惊呼“哦!闭包就这!我好像搞懂闭包了!”
看完这些资料后,关于闭包最核心的一句话,我觉得就是当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。
这是书中的原话,其中更加重要的,便是即使函数是在当前词法作用域之外执行
中的 之外
,这是区别 是通过普通作用域链查找的变量,还是通过闭包特性查找的变量 的关键。
其他的就不过多阐述了,反正你不知道的JavaScript 上卷
这本书,对于闭包讲的是真好。而且我发现网上一些阅读量比较高的文章,基本都是按照书中的写法写的。
所以,你不如直接上手这本书,一定一定一定会有很大的收获。
关于如何学习
说到这个话题,再结合这段时间我的学习,我想分享一点的我的观点。
上面说到的两本书,在前端圈是非常出名的,是公认的好书,基本上推荐前端书籍的话,这两本书必会被推荐。但是我在和许多人的交流过程中得知,很多初学者都没有系统地看过这两本书,包括我。
不知道有没有和我一样的,当碰到某一个知识点不懂的时候,就直接打开Google/百度,输入关键字,然后看一些相关的文章。(就比如本文中闭包这个概念)
但是呢,网上文章是参差不齐,而且相互“借鉴”的风气比较严重,很容易对我们初学者造成误导。很多时候并不是我们笨,并不是我们学不懂,而是我们看的资料不够好!
所以我觉得,在初学的时候,一定要看一些比较权威、比较经典的书来系统地学习。
一定不能浮躁,要踏踏实实地看书,不要总想着去网上随便看几篇文章,就可以把一个难懂的知识点搞懂。这也是我经常告诫自己的话,共勉!
以上就是本文的全部内容,主观性较强,有不同意见的话,欢迎交流探讨。🤭