序
小时候,我特别喜欢把东西拆成零部件,然后再重新装回去——旧的移动电话、立体声音响等我能拿到的一切物件都没能幸免。对于年幼的我来说,使用这些东西还为时过早,但是一旦它们坏了,我就立刻想弄清楚它们的工作原理。
记得有一次,我看见一个老式收音机的电路板,其中有一个缠满铜线的奇怪长管。我不知道这个长管的用途,所以立刻开始研究它。它有什么用?为什么出现在收音机里?为什么它看起来和电路板的其他部分不一样?为什么会有铜线缠绕着它?如果我把铜线拆下来会发生什么?现在我知道了,这是一个在晶体管收音机中很常见的、由缠绕着铜线的铁氧体棒制成的环形天线。
你是否也曾对解答各种各样的为什么很上瘾?大多数孩子都会。事实上,这可能是孩子身上我最喜欢的地方——求知欲很强。
很遗憾,现在我从事着一份专业性的工作,并以制作一些东西来度日。而我儿时的梦想是有一天能够制作那些被我拆开过的东西。当然,现在我所制作的大部分东西都是用JavaScript做成的,而不是铁氧体棒……但它们很相似!尽管我曾经一度非常热爱制作东西,但是现在却更渴望了解事物的运行原理。我经常寻找解决问题或修复bug的最佳方法,却很少花时间来研究我所使用的工具。
这也是为什么我一看到“你不知道的JavaScript”系列图书就很激动,因为JavaScript的确有很多我不了解的地方。我每天从早到晚都在使用JavaScript,并且已经持续了好几年,但我真的了解它了吗?答案是否定的。当然,我了解它的很多细节,并且经常阅读标准文档和邮件列表中的内容,但是了解的程度低于我内心那个六岁的孩子希望我达到的水平。
第一部分“作用域和闭包”是一个非常好的切入点。它对于如我一般的受众来说非常有用(希望对你也同样有用)。这本书并不会教你如何使用JavaScript,但是它会让你意识到对于其内部的运行原理你可能了解得并不多。同时这本书出现的时机也非常巧:ES6终于稳定下来了,并且各家浏览器的实现工作也正在逐步展开。如果你还没有学习其中的新功能(比如let和const),这本书将起到很好的介绍作用。
所以我希望你能喜欢这本书,尤其希望Kyle对JavaScript工作原理每一个细节的批判性思考会渗透到你的思考过程和日常工作中。知其然,也要知其所以然。
Shane Hudson