前言

我相信你已经注意到了这一系列图书的封面上都有大大的“JS”,它并不是用来诅咒JavaScript的缩写,尽管我们大家都诅咒过这门语言的怪异之处。

从最早期的Web开始,JavaScript就是驱动内容消费的交互式体验的基本技术。尽管闪烁的鼠标轨迹和恼人的弹出式广告可能是JavaScript起步的地方。但是近二十年之后,JavaScript的技术和功能已经有了很大的发展,并且位于世界上使用最广泛的软件平台——Web的核心,它的重要性几乎没有人再会质疑。

但是,作为一门编程语言,JavaScript一直为人诟病,部分原因是其历史沿革,更重要的原因则是其设计理念。因为JavaScript这个名字,Brendan Eich曾戏称它为“傻小弟”(相对于成熟的Java而言)。实际上,这个名字完全是政治和市场考量下的产物。两门语言之间千差万别,“JavaScript”之于“Java”就如同“Carnival”(嘉年华)之于“Car”(汽车)一样,两者之间并无半点关系。

JavaScript在概念和语法风格上借鉴了其他编程语言,包括C风格的过程式编程和隐晦的Scheme/Lisp风格的函数式编程,这使得它能为不同背景的开发人员所接受,包括那些没有多少编程经验的人。用JavaScript编写一个“Hello World”程序非常简单。因此对于初学者而言,它是有吸引力和易学的。

JavaScript可能是最容易上手的编程语言之一,但它的一些奇特之处使得它不像其他语言那样容易完全掌握。要想用C或者C++开发一个完整的应用程序,开发者需要对该门语言有相当深入的了解。然而对于JavaScript,即使我们用它开发了一个完整的系统也不见得就能深入理解它。

这门语言中有些复杂的概念隐藏得很深,却常常以一种看似简单的形式呈现。例如,将函数作为回调函数传递,这让JavaScript开发人员往往满足于使用这些现成便利的机制,而不愿去探究其中的原理。

JavaScript是一门简单易用的语言,应用广泛,同时它的语言机制又十分复杂和微妙,即使经验丰富的开发人员也需要用心学习才能真正掌握。

JavaScript的矛盾之处就在于此,它的阿喀琉斯之踵正是本书要解决的问题。因为无需深入理解就能用它来编程,所以人们常常放松对它的学习。

使命

在学习JavaScript的过程中,碰到令人抓狂的问题或挫折时,如果置之不理或不求甚解(就像有些人习惯做的那样),我们很快就会发现自己根本无从发挥这门语言的威力。

尽管这些被称为JavaScript的“精华”部分,但我恳请读者朋友们将其看作“容易的”“安全的” 或者“不完整的”部分。

“你不知道的JavaScript”系列丛书旨在介绍JavaScript的另一面,让你深入掌握JavaScript的全部,特别是那些难点。

JavaScript开发人员常常满足于一知半解,不愿更深入地了解其深层原因和运作方式,本书要解决的正是这个问题。我们会直面那些疑难困惑,绝不回避。

我个人不会仅仅满足于让代码运行起来而不明就里,你也应该这样。本书中,我会逐步介绍JavaScript中那些不太为人所知的地方,最终让你对这门语言有一个全面的了解。一旦掌握了这些知识,那些技巧、框架和时髦术语等都将不在话下。

本系列丛书全面深入地介绍了JavaScript中常为人误解和忽视的重要知识点,让你在读完之后不论从理论上还是实践上都能对这门语言有足够的信心。

目前你对JavaScript的了解可能都来自那些自身就一知半解的“专家”,而这仅仅是冰山一角。读完本系列丛书后,你将真正了解这门语言。现在就让我们踏上阅读寻知之旅吧。

综述

JavaScript是一门优秀的语言。只学其中一部分内容很容易,但是要全面掌握则很难。开发人员遇到困难时往往将其归咎于语言本身,而不反省他们自己对语言的理解有多匮乏。本系列丛书旨在解决这个问题,使读者能够发自内心地喜欢上这门语言。

本书中的很多示例都假定你使用的是现代(以及未来)的JavaScript引擎环境,比如ES6。有些代码在旧版本(ES6之前)的引擎下可能不会像书中描述的那样工作。

排版约定

本书使用了下列排版约定。

· 黑体

表示新术语或重点强调的内容。

· 等宽字体(constant width)

表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。

· 加粗等宽字体(constant width bold

表示应该由用户输入的命令或其他文本。

· 等宽斜体(constant width italic

表示应该由用户输入的值或根据上下文确定的值替换的文本。

该图标表示提示或建议。

该图标表示一般注记。

该图标表示警告或警示。

使用代码示例

补充材料(代码示例、练习等)可以从http://bit.ly/ydkjs-up-going-codehttp://bit.ly/ydkjs-es6beyond-code下载。

本书是要帮你完成工作的。一般来说,如果本书提供了示例代码,你可以把它用在你的程序或文档中。除非你使用了很大一部分代码,否则无需联系我们获得许可。比如,用本书的几个代码片段写一个程序就无需获得许可,销售或分发O'Reilly图书的示例光盘则需要获得许可;引用本书中的示例代码回答问题无需获得许可,将书中大量的代码放到你的产品文档中则需要获得许可。

我们很希望但并不强制要求你在引用书中内容时加上引用说明。引用说明一般包括书名、作者、出版社和ISBN。比如:“You Don't Know JavaScript: Up & Going by Kyle Simpson (O'Reilly). Copyright 2015 Getify Solutions, Inc., 978-1-491-92446-4”。

如果你觉得自己对示例代码的用法超出了上述许可的范围,欢迎你通过permissions@oreilly.com与我们联系。

Safari®Books Online

Safari Books Online(http://www.safaribooksonline.com)是应运而生的数字图书馆。它同时以图书和视频的形式出版世界顶级技术和商务作家的专业作品。

技术专家、软件开发人员、Web设计师、商务人士和创意专家等,在开展调研、解决问题、学习和认证培训时,都将Safari Books Online视作获取资料的首选渠道。

对于组织团体、政府机构和个人,Safari Books Online提供各种产品组合和灵活的定价策略。用户可通过一个功能完备的数据库检索系统访问O'Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology以及其他几十家出版社的上千种图书、培训视频和正式出版之前的书稿。要了解Safari Books Online的更多信息,我们网上见。

联系我们

请把对本书的评价和问题发给出版社。

美国:

O'Reilly Media, Inc.

1005 Gravenstein Highway North Sebastopol, CA 95472

中国:

北京市西城区西直门南大街2号成铭大厦C座807室(100035)奥莱利技术咨询(北京)有限公司

O'Reilly的每一本书都有专属网页,你可以在那儿找到本书的相关信息,包括勘误表、示例代码以及其他信息。本书第一部分“起步上路”的网站地址是http://bit.ly/ydkjs up-and-going。本书第二部分“ES6及更新版本”的网站地址是:http://bit.ly/ydkjs-es6-beyond。

对于本书的评论和技术性问题,请发送电子邮件到: bookquestions@oreilly.com

要了解更多O'Reilly图书、培训课程、会议和新闻的信息,请访问以下网站:http://www.oreilly.com

我们在Facebook的地址如下:http://facebook.com/oreilly

请关注我们的Twitter动态:http://twitter.com/oreillymedia

我们的YouTube视频地址如下:http://www.youtube.com/oreillymedia

电子书

扫描如下二维码,即可购买本书电子版。