技术

你不懂JS:入门与进阶(序\前言)

微信扫一扫,分享到朋友圈

你不懂JS:入门与进阶(序\前言)
收藏 0 0

你学的最后一个新东西是什么?

也许是一门外语,比如意大利语或德语。或者可能是一种图像编辑器,比如 Photoshop。或者是一种烹饪技术,木工活,日常锻炼。我想让你回忆一下你最终学会它时的感觉:醍醐灌顶的时刻。当事情从模糊不清变得豁然开朗,正如你掌握了如何使用台锯,或者理解了法语中雄性名词和雌性名词的区别。那种感觉怎么样?非常美妙,对吧?

现在我想让你再多向前回忆一些,找到你学会新技能之前的那一刻。 感觉如何?可能有点儿吓人,也可能有点儿沮丧,是吧?在某一个时刻,我们都还不知道我们现在知道的事情,而这完全没问题;我们是从某处开始的。学习新的东西是一次激动人心的冒险,特被是当你想高效地学习它时。

我教授过许多面向初学者的编程课程。上我课的学生们经常试着通过阅读博客或者拷贝粘贴代码来自学HTML或JavaScript这样的东西,但是他们都没能真正掌握能够使他们编写出自己渴望的结果的技能。而且,因为他们没有真正把握关于编程的特定问题的内在和外在,他们不能编写强大的代码或调试自己的程序,因为他们没有真正地理解发生的事情。

我总是相信教授我的课程的正确方法,意味着我教授Web标准,语义标记,良好注释的代码,和其他的最佳实践。我使用一种彻底的方式讲解问题来阐明如何做与为何做,而非通过复制粘贴来倒腾代码。当你努力理解你的代码时,你就在创造更好的成果,并在编程上变得更加纯熟。代码不再仅仅是你的 工作,而是你的 作品。这就是为什么我喜爱 入门与进阶。Kyle通过深入讲解语法和术语给我们带来了一个对JavaScript的全面介绍。这本书不是浅尝辄止,而是让我们真正地理解我们将要编写的东西。

能够在你的网站中复制JQuery代码段是不够的,就像在Photoshop中仅仅学习如何打开,关闭和保存一个文档是不够的一样。确实,只要我学会了一些关于编程的基本我就可以制造并分享一些我的设计。但是没有合理地了解这些工具和它们背后的机制,我又如何定义一个网格,或者建造一个合理的类型系统,或者为Web优化图像呢?JavaScript也一样。不知道循环如何工作,或者如何定义变量,或者作用域是什么,我们将不能写出最好的代码。我们不想安于这种次优的状态 —— 这毕竟是我们的作品。

你对JavaScript探索得越多,它就变得越清晰。闭包,对象,和方法这样的词现在可能看起来与你还有些距离,但是这本书将会帮你搞清楚这些术语。我希望你在开始阅读这本书时保持学会东西之前与之后的那两种感觉。它看起来可能有些令人望而却步,但是你已经拿起了这本书,你开启了一个了不起的旅程来磨练自己的知识。入门与进阶 是我们理解编程之路的开端。享受醍醐灌顶的时刻吧!

Jenn Lukas
jennlukas.com@jennlukas
前端顾问

前言

我确信你注意到了,但是这个系列图书标题中的“JS”不是一个用来诅咒JavaScript的缩写,虽然有时我们可能都能看出它是在诅咒这门语言的怪异之处!

自从web的最早期开始,JavaScript就一直是在我们消费内容时驱动互动体验的基础技术。虽然闪烁的鼠标轨迹和烦人的弹出框可能是JavaScript的起源,但是在差不多20年以后,JavaScript的技术和能力已经增长了许多个数量级,在世界上最广泛应用的软件平台 —— web —— 的核心上,很少有人怀疑它的重要性。

但作为一种语言,它一直总是都是一大堆批评的目标,部分是因为它的遗留问题,但更大程度上是因为它的设计思想。正如 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的 全部, 甚至是而且特别是“艰难的部分”。

这里,我们迎面挑战这种趋势:JS开发者总是得过且过地学习“将就够用”的东西,而从来不强迫他们自己去学习这门语言究竟是为何与如何工作的。另外,我们摒弃那些当路途艰难时常见的 逃跑 意见。

我不满足于,你也不应当满足于,一看到某些东西 好用 就停下来,而不真正知道 为什么。我礼貌地挑战你沿着这条颠簸的“少有人走的路”走下去,并拥抱JavaScript和它能做的一起。有了这些知识,没有什么技术,框架,本周最流行的词儿,是你理解不了的。

这些书的每一本都承担这门语言的一个具体的核心部分 —— 这些内容都是最常被误解或不被了解的,并且非常深入、穷尽地探究它们。你应当在读过之后对你的理解有坚定的信心,不仅仅是理论上的,而且是对实际的“你需要懂得的”部分。

你 目前 知道的JavaScript可能是被那些没有完全懂得它的人传授下来的 部分那些 JavaScript只是真正的这门语言的影子。你  不 真正 懂得JavaScript,但如果你深入这个系列,你会的。读下去,我的朋友。JavaScript在等着你。

总结

JavaScript很了不起。很容易学习它的一部分,但是完整地(甚至是 充分地)学习它可就难太多了。当开发者们遭遇困惑时,他们经常责备这门语言而不是自己对它理解的匮乏。这些书的目的就是要修正这些情况,极大地巩固这门语言中你现在可以,而且 应当,深刻 懂得 的东西。

注意:这本书中的许多例子都假定运行在现代化的(以及与未来接轨的)JavaScript引擎环境中,比如ES6。一些代码可能会在老版本的(前ES6)引擎中不能如描述的那样工作。

展开阅读全文
半拉子前端的自留地,发际线逐渐后移的抠脚大叔!

前端面试-深拷贝和浅拷贝

上一篇

你不懂JS:入门与进阶(第一章:进入编程)

下一篇

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片

体验小程序

标签地图

分类

EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00

      微信扫一扫

      微信扫一扫