你并不了解 JavaScript (丛书) - 第二版
序
欢迎阅读广受好评的你并不了解 JavaScript(YDKJS)系列丛书第二版:你并不了解 JavaScript (YDKJSY).
如果你读过第一版的书,你可以期待这些新书中的内容焕然一新,包含了 JS 过去五年中的大量更新以及变化。但我希望并相信你仍然会得到同样的承诺,尊重 JS并挖掘真正让它成功的原因。
如果您是第一次阅读这些书籍,我很高兴您能来到这里。准备好踏上深入 JavaScript 各个角落的广泛旅程吧。
如果你是编程或 JS 的新手,请注意这些书并不是温和的「JavaScript 入门」。这些内容有时很复杂,很有挑战性,比一般的初学者要深入得多。当然无论您的背景如何,我们都欢迎您的阅读,但是这些书的写作前提是您已经能够熟练使用 JS,并且至少有 6-9 个月的使用经验。
覆盖范围
这些书并不是描述 JavaScript 有多好,但是这并不意味着我们在研究它有多坏,而是探索所有部分。
也许有人告诉过你,或者你自己也感觉到,JS 是一门漏洞百出的语言,设计拙劣,实现不一致。许多人断言 JS 是世界上最糟糕、最流行的语言;没有人写 JS 是因为他们想写,只是因为他们不得不写,因为 JS 是网络的中心。这是一种荒谬的、不健康的、完全居高临下的说法。
每天都有数以百万计的开发人员编写 JavaScript,其中许多人都非常欣赏和尊重 JavaScript 这门语言。
和其他伟大的语言一样,JavaScript 也有其辉煌的部分和伤疤。就连 JavaScript 的创造者 Brendan Eich 本人也将其中的一些部分称为错误。但他错了:它们根本不是错误。JS 之所以有今天的成就—世界上最普及、最具影响力的编程语言,正是因为所有这些部分。
不要相信「你应该只学习和使用一小部分好的部分,而避免使用所有不好的部分」的谎言。不要相信「X 是新的 Y」的谎言,不要相信语言的某些新特性会立即将以前特性的所有用法贬低为过时和无知。请不要听信有人说您的代码不「现代」,因为它还没有使用几周前才提出的 stage-0 特性!
JS 的每一部分都是有用的。有些部分比其他部分更有用。有些部分需要您更加仔细和用心。
我认为,只使用 JavaScript 语言的一小部分就想成为一名真正有效的 JavaScript 开发人员是非常荒谬的。你能想象一个建筑工人拥有一个装满工具的工具箱,却只使用锤子,而对螺丝刀或卷尺嗤之以鼻吗?这太愚蠢了。
我毫无保留的主张是,你应该去学习 JavaScript 的所有部分,并在适当的时候使用它们!如果我可以大胆地建议:是时候抛弃任何告诉你不这样做的 JS 书籍了。
标题?
那么该系列的标题是什么意思呢?
我并不是想侮辱你,批评你目前缺乏对 JavaScript 的知识或理解。我并不是在暗示你不能或者不会学习 JavaScript。我并不是在吹嘘我和少数人拥有高级智慧。
说真的,所有这些都是人们在阅读原著之前对原著标题的真实反应。它们毫无根据。
「你并不了解 JavaScript」这个标题的主要意思是说,大多数 JS 开发人员不会花时间去真正理解他们编写的代码是如何工作的。他们只知道代码是工作的,它产生了预期的结果。但是,他们要么不了解原理,或者更糟糕的是他们对原理有一个不准确的心智模型,而这个模型在细究时就会动摇。
我向读者提出一个温和而真诚的挑战,抛开您对 JS 的假设,以全新的眼光和充满好奇心的态度来对待它,引导您对所写的每一行代码提出为什么。为什么要这样做?为什么有一种方法比其他六种方法更好或更合适?为什么所有「潮流人士」都说用你的代码做 X,但事实证明 Y 可能是更好的选择?
我在书名中加上「并不」,不仅是因为这是第二版,还因为最终我希望这些书能以一种充满希望而非令人沮丧的方式向您提出挑战。
但我要说明的是:我认为不可能完全了解 JS。这不是一个要取得的成就,而是一个要努力追求的目标。你不可能完全理解 JS,你只是随着使用 JS 语言时间的增加而不断学习。当你学得越深,你就越能重温以前了解的东西,并从更有经验的角度重新学习。
我鼓励你对 JavaScript 乃至所有的软件开发都抱有这样一种心态:你永远不会完全掌握它,但你可以而且应该不断努力去接近这个目标,这个过程将贯穿你整个软件开发职业生涯,甚至更长。
你总能比现在更了解 JS。这就是我希望 YDKJSY 系列书籍所表达的。
使命
我认为,JS 在世界编程语言中的一流地位已经毋庸置疑。
但是,我们仍然需要提出一个不同的、更重要的理由,而这些书籍正是为了应对这一挑战。
我曾为来自全球六大洲 25 个国家的 5000 多名团队和公司的开发人员授课。我所看到的是,很多时候,相当一部分人只关心程序的结果,而不是程序是如何编写的,或者它是如何/为什么工作的。
我不仅是一名开发人员,而且在教授其他许多开发人员的过程中,我的经验告诉我:如果你能更全面地理解代码是如何工作的,那么你的开发工作总是会更有效,而不是仅仅让代码产生预期的结果。
换句话说,不要止步于能用,应该 百尺竿头,更进一步。
所有的开发人员都经常遇到某些代码无法正常工作的问题,他们也不知道为什么。但 JS 开发人员往往会将此归咎于语言,而不是承认这是他们自己的理解不足。这些书既是问题又是答案:它为什么要做这个,并且如何让它这么做。
我在 YDKJSY 的使命是让每一位 JS 开发人员都能完全拥有他们编写的代码,理解它,并以意图和清晰的方式编写。
路径
有些人开始阅读这本书时的目标是连续读完所有六本书。
我想提醒您考虑改变这一想法。
我并不想让读者直接读完 YDKJSY 系列。这些书中的内容非常密集,因为 JavaScript功 能强大、复杂,而且部分内容相当复杂。没有人能够真正希望一次性将所有这些信息下载到自己的大脑中,并保留相当数量的信息。这是不合理的,也是愚蠢的尝试。
我的建议是,您可以慢慢阅读 YDKJSY。从头到尾读完一章,然后回头逐节重读。在每一节之间停下来,练习该节的代码或想法。对于较大的概念,可能需要花几天时间消化、重读、练习,然后再消化。
您可以在每一章上花费一两周的时间,在每一本书上花费一两个月的时间,在整个系列上花费一年或更长的时间,但恕我直言您仍然无法榨干 YDKJSY 的每一丝精华。
不要狂读这些书;要有耐心,分散阅读。在阅读的同时,在你的工作或你参与的项目中进行大量的实际代码练习。与我一路走来提出的观点进行斗争,与他人进行辩论,最重要的是,与我提出不同意见!组织学习小组或读书俱乐部。在办公室举办小型研讨会。就你所学到的写博客文章。在当地的 JS 聚会上谈论这些话题。
我的目标从来不是说服您同意我的观点,而是鼓励您拥有并能够捍卫自己的观点。您不可能通过快速通读这些书而达到。这需要您花很长的时间,在学习、思考和重新审视的过程中,一点一点地领悟。
这些书的目的是为你在 JavaScript 的漫游中提供一个指导方向,让你从目前对 JavaScript 语言的理解中走出来,走向更深入的理解。你对 JS 的理解越深,你提出的问题就越多,你需要探索的东西就越多!这正是我感到兴奋的地方!
我很高兴您踏上这段旅程,我也很荣幸您能一路上考虑和参考这些书籍。是时候开始了解 JS 了。