前言

相信读者都有过吐槽JavaScript语言本身的怪癖,这是共识,但是本系列书籍书名中的JS不是用来吐槽JavaScript的缩略词。

在Web开发的早期,JavaScript是驱动我们与页面内容进行交互的基础技术,那时候的JavaScript可以完成鼠标轨迹闪烁、弹出烦人的提示窗等功能。经过20多年的发展,JavaScript的技术和能力实现了指数级的增长,没有人再怀疑它对于现在世界上应用最广泛的软件平台的核心——Web的重要性。

但是作为一门语言,JS一直饱受争议,这些争议一部分源自其历史遗留问题, 更多的还是针对其设计理念。正如Brendan Eich曾说,从JavaScript的名字可以看出,相比于成熟的大哥Java,它只是一个不愿说话的小弟弟。但是它的名字只不过是市场营销的一个偶然罢了。这两门语言在很多重要方面都有着巨大的差异,“JavaScript”与“Java”的关系犹如“Carnival”(狂欢)与“Car”(汽车)的关系。

由于JavaScript借鉴了其他几门语言的一些概念和语法习惯,包括C语言风格的面向过程特性,以及一些不明显的Scheme/Lisp风格的函数式编程特性。对于绝大多数开发者,甚至是没有编程经验的人,都很容易接受JavaScript。它的“Hello World”是如此的简单,因此新手在接触初期便可快速上手。

虽然JavaScript可能是从起到到运行最容易的语言之一,但它的一些怪癖使得它不如其他语言一样容易精通。用C或者C++一样开发一个完善的程序、完善的产品需要深入掌握这门语言的知识,JavaScript也不例外,只是蜻蜓点水是不行的。

在简单易用的外表下,一些复杂的概念,深深地根植于这门语言中。例如传递函数作为回调可以帮助JavaScript开发者放心使用这门语言而不必关心内部实现。

JavaScript既是一门被广泛使用的简单易用的语言,同时也具有一些复杂而微妙的语言机制。即使是经验丰富的JavaScript开发者,也必须仔细学习才能真正掌握它。

Java中有一个悖论,就像这门语言的阿基里斯之锺,也是我们正在面临的挑战。由于可以在不理解的情况下使用JavaScript,可能就永远不会理解这门语言了。

目标

如果在JavaScript中遇到了意料之外或者令人沮丧的东西,很多人的的自然反应是将它放入黑名单,长此以往,你接触的将只是JavaScript丰富宝矿的一个空壳。

尽管JavaScript的子集被描述为著名的“The Good Parts”,亲爱的读者,我恳求你不要老想着“The Easy Parts”,“The Safe Parts”或者“The Incomplete Parts”。

你不了解的JS系列书籍提出一个相反的挑战:学习且深入理解JavaScript的全部,尤其是“The Tough Parts”。

在这里,我们倾向于让JS开发者学会“足够多”的知识,而不是强迫他们去学习这门语言是如何运行的以及为什么这么运行。同时,随着学习的深入,我们避开常用的方法以退为进。

我是永不满足的,你们也不应该仅仅停留在知道这个东西怎么工作,而不知道为什么这么工作。我希望你们能够坚持走完这段“少有人走过”的崎岖之路,拥抱JavaScript的方方面面。掌握了这些知识,没有哪种技术、没有哪个框架、没有哪个当下流行的首字母缩略词是你不能理解的。

这一系列书中的每一本都深入且详尽地阐述这门语言的一个核心主题,这些主题常被误解或者理解不透彻。在阅读时,不要受限于自己已有的知识,不要先入为主,不要仅停留在理论层面,而要多动手练习“你需要了解”的部分。

目前你所了解的JavaScript可能是某些本身就一知半解的人传授给你的,这个JavaScript仅仅是真正的JavaScript的一个影子。你并没有真正理解JavaScript,但是如果你深入学习本系列书,你将理解。读起来吧,我的朋友,JavaScript在召唤你。

总结

JavaScript是奇妙的。学习它的一部分很简单,但是要完全地(或者充分地)掌握它则难得多。开发者遇到困恼时,他们尝尝归咎于语言本身,而不是自身理解的缺失。本系列书籍旨在纠正这一点,以激起你对JavaScript的极大兴趣,这是你现在能够,也应该铭记于心的。

注:书中的很多例子都运行于现代(即将到来)JavaScript引擎,如ES6。有些代码可能在老旧(ES6之前)引擎中不能正常运行。

results matching ""

    No results matching ""