“JavaScript 葵花宝典” 来了!与 JSON 之父一起参悟 JS 之道

高级前端进阶

共 4033字,需浏览 9分钟

 · 2021-07-27

循着标题点进来的朋友,或许已经猜到图灵君说的「他」是谁了吧?
没错!他就是道格拉斯·克罗克福德(Douglas Crockford)——在前端圈里的名气可能比JavaScript之父Brendan Eich还大的老道

道格拉斯·克罗克福德

图源:crockford.com

道格拉斯最大的成就——用他自己的话说——就是让世人相信,JavaScript这门语言居然还有好的一面!

2008年,时任雅虎Senior JavaScript架构师的道格拉斯,通过O'Reilly出版了JavaScript: The Good Parts,书名直译为「JavaScript:好的部分中文版名为《JavaScript语言精粹》)。因为封面上有一只蝴蝶,所以这本书被大家亲切地称为「蝴蝶书

蝴蝶书出版后大获成功,豆瓣获千人打分9.1分。说它影响了一整代前端人也不为过。

十多年来,道格拉斯成为JavaScript发展史的深度参与者。他认为JavaScript「仍然表面一团糟,精粹变得越来越少,但留下来的那些精粹更显闪耀。
当萌生更新蝴蝶书的想法时,他却惊奇地发现自己和O'Reilly都不是那本书的版权所有者。雅虎才是!而雅虎早已销声匿迹了。
既然无法更新,那就写一本新书吧!这便有了图灵君今天要重点介绍的这本《JavaScript悟道》

道格拉斯·克罗克福德 ————著

死月(朱凯迪)————译

虽然英文名为How JavaScript Works,但这绝非中规中矩讲JavaScript运行机制的书。

那么这究竟是怎样的一本奇书呢?图灵君愿称它为JavaScript葵花宝典
道格拉斯在「导读中这样写道:

编程语言的重要设计目标之一就是尽可能使其简洁、优雅、逻辑性强,没有各种奇怪的极端情况。然而事实上,JavaScript远没有达到这个目标。随着越来越多的特性加入,每一次新版的发布都会使其变得越来越糟糕。


我们应当尽量待在这门语言干净阳光的一面,这里已经有能让你写出好程序所需的一切了,不要让自己堕入无边黑洞。

寥寥数语,精辟地总结了道格拉斯对JavaScript又爱又恨的纠葛情感。诚然,JavaScript既有阳光面,也有黑暗面。如果你曾走过弯路、踩过深坑,如果你曾无数次在心里骂这门「烂语言,那就捧起这本书,和道格拉斯一起痛并快乐地用好JavaScript吧!

来看看这本书都有什么内容。作为JSON之父,道格拉斯用特别的方式来呈现目录:
[  {"编号"0"章""导读"},  {"编号"1"章""命名"},  {"编号"2"章""数值"},  {"编号"3"章""高精度整数"},  {"编号"4"章""高精度浮点数"},  {"编号"5"章""高精度有理数"},  {"编号"6"章""布尔类型"},  {"编号"7"章""数组"},  {"编号"8"章""对象"},  {"编号"9"章""字符串"},  {"编号"10"章""底型"},  {"编号"11"章""语句"},  {"编号"12"章""函数"},  {"编号"13"章""生成器"},  {"编号"14"章""异常"},  {"编号"15"章""程序"},  {"编号"16"章""this"},  {"编号"17"章""非类实例对象"},  {"编号"18"章""尾调用"},  {"编号"19"章""纯度"},  {"编号"20"章""事件化编程"},  {"编号"21"章""日期"},  {"编号"22"章""JSON"},  {"编号"23"章""测试"},  {"编号"24"章""优化"},  {"编号"25"章""转译"},  {"编号"26"章""分词"},  {"编号"27"章""解析"},  {"编号"28"章""代码生成"},  {"编号"29"章""运行时"},  {"编号": 30, "章""嚯!"},  {"编号"31"章""结语"}]

二十年真知灼见


在《JavaScript悟道》这本书中,道格拉斯分享了自己写好代码的「不传之法:对于一门语言,只使用它能满足自己的最小集。
本书正是记录了他所使用的这个JavaScript最小集,以及到目前为止对这门语言的全部思考。是的,有些观点会令你惊呼!

未来的终极语言是什么模样


道格拉斯犀利地指出,JavaScript一定不是我们学习旅程的终点,而是引领我们抵达终极语言的过渡语言。
终极语言应该是全球通用、安全的。JavaScript的设计初衷是成为这样一门语言,可惜在其发展过程中,人们不停地给它「整容,拼命地往其中注入各种新特性来防止它老化,或者说稳住其流行地位。
在本书中,道格拉斯用了数章篇幅来描绘他心目中的终极语言。他给它起了一个名字:Neo。
读完本书,或许你会发现,道格拉斯起的这个名字,和《黑客帝国》中的Neo有千丝万缕的联系。

道格拉斯与中国读者隔空对话


在书中,你会读到道格拉斯特意为中文版读者准备的内容。他回答了10位中国读者的提问。
  • 他如何看待TypeScript?

  • 他如何看待JavaScript在非前端领域的发展?

  • 怎样才能具备创造一门热门语言的能力?

  • 他是否信仰阿特伍德定律?

  • ……

Wun More Thing


道格拉斯反复提到,JavaScript充满了各种奇怪的用法。他在书中详解了个中缘由,并给出了建议。堪称JavaScript版十万个为什么。
  • 为什么JavaScript(以及大多数编程语言)不允许变量名中存在空格,以及为什么这是早应被打破的规则?

  • 为什么JavaScript不擅长处理小数,尤其是与金钱相关的小数?

  • 为什么你最好永远不要用某些比较运算符,比如==!=

  • 为什么1 < 2 < 3 // true,而3 > 2 > 1 // false

  • 为什么"2" + 1 // "21",而"2" - 1 // 1

  • 以及……为什么one不应该拼作one,而应该拼作wun?!

总之,这本奇书将带你以全新的视角看待JavaScript这门你以为自己已经十分熟悉的语言。现在就下单,准备好大开眼界吧!



#互动·送书#

福利时间

最后,我又来给大家送福利了,这么好的书不送几本给大家怎么行呢?

这次准备了多种方式抽奖,「小程序、在看」这两种方式都可以参与!感谢亲爱的读者们,你们的支持也是我持续更文最大的动力。

为了避免中奖后失联,提前加我微信哈

抽奖活动规则

奖品设置:《JavaScript 悟道》 12 本

开奖时间:7 月 31 日 晚上 21:00

小程序抽奖(7本)

公众号内,回复 抽奖 ,自动弹出 高级前端面试 小程序图片,长按图片进入抽奖页面,点击参与即可,可邀请好友助力获得更多机会,按排行榜权重随机抽取

正式开奖后,中奖的读者会收到通知,到时,请中奖的读者把中奖 ID 截图后发给我,我会在近期将礼物寄送给您。

在看抽奖(5本)

记得先添加我微信,不然我看不到哪些小伙伴点再看

  • 大奖:随机抽取「5位」在看同学各送出一本 JavaScript 悟道

  • 参与奖:随机抽取「5位」在看各送出「10元」红包。


浏览 37
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报