1. 此文啰嗦。
通过翻译这篇长文,我发现老外的啰嗦水平真是达到了登峰造极的境界了--经常性地一个长长的句子构成一段,想要找个句号都很难。这虽然给我翻译造成了相当大的障碍,导致了断断续续一个多月的工作量(读一两遍根本理解不了)。但客观上却明显提高了自己的阅读和翻译能力,这也是可喜的一面。老外虽然啰嗦,但也没有不符合语法的地方,而且关键在于要说明的这个闭包实在是太抽象了。所以,即使啰嗦点,能讲明白,也算是高手了。
2. 不易理解。
文中的内容环环相扣,前面的不理解,后面休想看懂。因此,一定要步步为营,乘胜追击。而且,在阅读的时候千万不能因为一两句话想不明白就轻言放弃,要有个思想准备。当然,也不能因为前面看不懂就不往后看了,前面的看不懂也要硬着头皮往后看。一般来说,不通读全文三五遍,甚至七八遍都是理解不了的。因为其中有很多概念和逻辑需要梳理、定位、形象化。
3. 最好参考其他资料。
如果你能理解《JavaScript 权威指南(第四版)》中有关“作用域”和“变量解析”的阐述,或者《JavaScript 权威指南(第五版)》中有关“闭包”的内容,那么,看这篇文章不应该有太大的难度。所以,可以参考这些资料。
4. 把抽象转变为形象。
文中的概念太多,如果从抽象意义上认识,在没有理解的情况下很难记住,而记不住前面的概念就无法理解后来的概念。所以,最好准备点草稿纸,随看随画,不停修正自己的理解。通过把抽象的概念形象化,可以有效地提高阅读效率。另外,建议有条件的读者将文章打印出来看,为此我专门准备了适合打印的版本(见文首的链接)。
5.真正理解全文后的感受
守得云开见月明。如果你能够挺过来,那证明你是真正的好汉,更应该恭喜的是,你有希望成为一名合格的高级 JavaScript 程序员。因为,理解了闭包,不仅仅是一个闭包本身,也会相应理解 JavaScript 基于原型的继承机制(关于这一点,我会再撰文)、属性解析机制,或者说差不多算是理解了 JavaScript 解析器的工作原理了。那种一览众山小的感觉,何止是快意?
最后,祝您学习顺利!