第一部分 起步上路

你最近新学的技能是什么?

可能是一门外语,比如意大利语或德语。可能是一个图像编辑工具,如Photoshop。也可能是某种厨艺或者木工活,又或是某种健身项目。请回忆一下你最终掌握这项技能的那个时刻,那应该就是你突然顿悟的一刻。当你学会操控台锯或者理解了法语中阳性名词和阴性名词之间的区别时,事情就从模糊变得明朗清晰起来。那时感觉如何?是不是非常不可思议?

现在,再往前回忆一下你掌握这项新技能之前的情形。那时你是什么感觉呢?可能有点恐惧又有点心慌,是不是?在某一刻,我们还不了解自己现在已经掌握的知识,这完全没有任何问题;每个人都是从某个起点开始学习的。学习新技能是一场令人激动的探险,特别是当你想要高效学习某个主题时。

我教授过很多初级的编程课程。跟着我学习的学生通常之前已经试着通过博客或复制、粘贴代码来自学过HTML或者JavaScript这样的主题,但是他们并没有能够真正掌握编码知识来实现想要的目标。而且,由于并没有真正掌握某些编程主题的细节,他们便无法编写功能强大的代码或调试自己的作品,因为他们并没有真正理解所发生的一切。

我一直坚信要以正确的方法授课,这意味着我会讲授Web标准、语义标记、注释良好的代码以及其他的最佳实践。我会详细讲解涉及的主题,解释如何做以及这么做的原因,而不仅仅是扔出代码以供复制、粘贴。努力理解自己的代码后,你就可以更好地完成任务,同时自己也会得到进步。此时代码不再仅仅只是你的工作,更是你的作品。这就是我喜欢本书内容的原因。Kyle带领我们深入了解语法和术语,对JavaScript这个语言进行了出色、全面的介绍。本书并没有流于表面,而是确实有助于我们真正理解概念。

就像只学会如何在Photoshop中打开、关闭和保存文档是不够的,只能够将jQuery代码片段复制到你的网站上也是不够的。的确,只需要学习一些与编程相关的基础知识,我就能够编写并共享自己的设计。但如果没有对工具及其背后原理的正确理解,我怎么能够定义一个网格或创建一个明晰的类型系统呢?又如何才能优化Web上的图像呢?对JavaScript来说也是一样的。如果不清楚循环的工作模式、变量的定义以及作用域的含义,那么我们就无法编写自己所能实现的最佳代码。我们不能接受退而求其次的作品,毕竟这是我们自己的作品。

你对JavaScript的探索越深入,它就会变得越清晰。或许你对闭包、对象和方法这样的词汇目前来说还不是很熟悉,但本书将帮助你明晰这些术语。我希望你在开始学习本书时记住自己学习某样东西前后的感受。这可能很艰巨,但为了要开始一段磨砺你的知识宝剑的精彩之旅,你已经翻阅至此。本书第一部分是我们理解编程的起点。享受你顿悟的时刻吧!

——Jenn Lukas(http://jennlukas.com, @jennlukas),前端顾问