agou 发表于 2023-10-4 06:58:04

如果只能推荐一本 JavaScript 的书,你会推荐哪本?

如果只能推荐一本 JavaScript 的书,你会推荐哪本?

Ryun 发表于 2023-10-4 06:58:12

关于javascript书籍测评,这两年犀牛书除了第七版,出了几本有意思的新书,比如javascript悟道,还有JS二十年,还有这本Vuejs设计与实现等,值得重新推荐一下,并且最近也一直有同学私聊问我css和node书籍的测评,这次就搞系统的测评一下2022年前端工程师必备的书籍
花果山大圣:2022年前端必备的书籍全测评1【Javascript】视频版本地址:
2022年Javascript书籍全测评【前端读书会01】_哔哩哔哩_bilibili-----分割线-----

写在专栏里推荐的js书, 转到这里吧 ,视频版移步
Javascript书籍全测评【前端必备】_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
<hr/>大家好,我是大圣,今天给大家带来期待已久的javascript书籍测评,工作者9年多看过的js书大部分都在这了,会分成这几个部分来推荐
首先是系统化学习js的书,让你掌握前端工程师必备的js基础,
然后是一些横向扩展的书,比如算法呀,设计模式呀,工程实现呀,框架设计呀等,属于最佳实践的类型, 然后是关于语言设计细节的进阶书,深入语言设计的细节,进阶和面试装逼必备
然后是一些小书,可以快速翻越,掌握js某一个知识点,然后是略微过时,但是依然值得一读的经典,最后介绍关于es6和不推荐的书

http://pic1.zhimg.com/v2-53b054b10b55ab7aeb185dc6e8004ee9_r.jpg?source=1940ef5c
语言体系化学习

javascript dom编程艺术

https://book.douban.com/subject/6038371/

http://picx.zhimg.com/v2-f1481d00565132ebd160fd5855085b5e_r.jpg?source=1940ef5c
首先语言本身的体系化学习,首先推荐这本《javascript dom编程艺术》,这本书用简单的图片库和动画案例,让你快速入门js,产生兴趣,如果想全面的学习js还是不够的, 推荐这本刚上线不久的前端圣经,也被几代前端人称为红宝书
javascript高级程序设计(红宝书)

https://book.douban.com/subject/35175321/

http://picx.zhimg.com/v2-067c07d3b182f8f776ac30893ea94bce_r.jpg?source=1940ef5c
《javascript高级程序设计》第四版,我手里还有第二版和第三版,是几代前端体系化学习js必看的书, 和犀牛书齐名,虽然叫高级程序设计,但是阅读难度比较低,第四版全面使用es6+的语法,比较意外的是还把生成器迭代器,promise,proxy单独抽离成了章节,最近有研究vue3源码,对proxy和reflect困惑的同学们快去学习吧,除了语法层面的全面更新,浏览器方便也加入了dom4的规范,比如mutation observer,这个api在我们统计一些指标比如FMP的时候很有用,然后就是canvas,webgl以及各种现代浏览器的api,比如文件,通知,web worker,错误处理,模块化以及最佳实践,第四版绝对是体系化学习js最好的书
而且最近这本书唯一的吐槽点,就是把promise翻译成了期约,我还专门问了hax,之所以叫期约定,是因为promise这个东西,在有的语言里叫future, 这里做了个合并,把future和promise合并,称之为期约,其实我也觉得promise不翻译就ok,但是如果翻译的话,期约算是很准确了,不过无伤大雅,不耽误这本书的地位
对了 这本书估计看一遍不够,看个两三遍效果更好,十月份我准备再看一遍
其实体系化学习js这两本就够了, 还有几本电子书我也很推荐
现代javascript教程(在线)

https://zh.javascript.info/

http://pic1.zhimg.com/v2-21adbf1e3da86ebf596576028fb78fcf_r.jpg?source=1940ef5c
一个是《现代javascript教程》 ,实时性做的非常棒,从入门,提升和进阶三个方向讲解,并且还配有习题和解析,配合红宝书学习体验更佳 但是我本人不太爱看电子书, 所以现在把它当做工具书来查询用
practical-modern-javascript 深入理解JS特性

https://github.com/mjavascript/practical-modern-javascript

http://picx.zhimg.com/v2-ebf85cd09293677752dff19ce6301c27_r.jpg?source=1940ef5c
还有一本就是深入理解JS特性,是一本很精彩的从es6讲起的书,很推荐,但是建议在阅读红宝书之后看, 我们有了前端的知识体系后,这本书的收获会巨大,而且这哥们有一系列书,后面几本回头我看完了再补充,

http://pica.zhimg.com/v2-e4055f69f0d8aab062bef9857b21db24_r.jpg?source=1940ef5c
横向扩展

学完这些对付一般的前端面试就没问题了,但是行走江湖只有武器是不够的,还需要精妙的武功秘籍,也就是最佳实践
JavaScript忍者秘籍(第2版)

https://book.douban.com/subject/30143702/

http://picx.zhimg.com/v2-81f3dd43dcde48ff8ea087de3aa213c8_r.jpg?source=1940ef5c
首先推荐jquery作者的《javascript忍者秘籍》名字很中二,但是内容包含了实现常见功能的最佳实践,第二版也是es6+为主,重点集中在工程问题的捷达上,比如函数的上下文,promis的实现,宏任务微任务,闭包的原理以及浏览器开发技巧等,这本书最大的有点就是学起来有趣,不过翻译有些小问题,建议有实力的直接看英文版
这本书所有章节,都是从具体的实际问题入手,不纠结太多语法细节,非常推荐
javascript框架设计

https://book.douban.com/subject/27133542/

http://pica.zhimg.com/v2-440c3943c69b16e990df5d3fe6582824_r.jpg?source=1940ef5c
然后推荐《javascript框架设计》主要是针对各种兼容性,包括语言能力扩展,选择器引擎,类,异步模型,动画引擎等,有太多兼容性的处理方案,对js功底提升明显,不过在现代浏览器普及的今天,稍微有一些过时,不过还是推荐一下,仅此纪念一下司徒正美
javascript设计模式与开发实践

https://book.douban.com/subject/26382780/

http://picx.zhimg.com/v2-6db3023446d4a896347633edfa5d4070_r.jpg?source=1940ef5c
然后推荐设计模式相关,两本书,主推这本《javascript设计模式与开发实践,设计模式就是最佳实践,就像我们打王者,亚瑟就是要走上单,吉吉国王就是最适合打野,每个英雄特点不一样,就会诞生出各种战斗力最强的组合和装备选择,设计模式也是如此,我们通过学习前人总结的最佳实践,并且通过js种的实战加深理解,包括单例代理工厂迭代器,发布订阅享元,装饰器等模式,和一些常见的编程原则,是一本不可多得的好书,不过例子还是显得过于分散,其实我觉得设计模式特别适合和前端的组件库一起讲解,通过一个体系化的组件库来讲解各种不同的设计模式,以后有机会我写一本 yeah
学习javascript数据结构和算法


http://picx.zhimg.com/v2-38cc824276c037115da0b70cab1f7e6f_r.jpg?source=1940ef5c

http://picx.zhimg.com/v2-f001797c25bc1e867bf0c4fd91eed272_r.jpg?source=1940ef5c
然后是算法,除了我手里这本,还有一个挖掘机配色的js算法书,这两本其实讲的都还不错,不过我都不推荐,因为算法只入个门是没意义的,需要体系化的学习和刷题,算法我推荐《算法》第四版,java的例子,正好用js重写一遍,建立完算法知识体系后,再来看这些js算法书查缺补漏一下更好,以后有机会我再做个节目推荐一些学算法的书
如果只看这两本js的算法书,质量虽然不错,但是会有一钟学了很多东西,但实际没啥卵用
深入语言细节

上面的书看完,就已经对js的方方面面有了一个很好的掌握了,继续进阶,就需要对js本身语言设计细节和执行原理有所涉猎了, 当年Brendan Eich来过一次中国,有幸合影后,在js作者的光环下我要开始去研究js的实现细节, 在推荐一系列技术书之前,先推荐一本刚发布的电子书

http://pic1.zhimg.com/v2-089d074d2951d29660122880893e7b4c_r.jpg?source=1940ef5c
Javascript20周年(历史书)

https://cn.history.js.org/
本书由 JavaScript 之父 Brendan Eich 与 ES6 规范首席作者 Allen Wirfs-Brock 联合编写,记录1995~2015共计 20 年的 JavaScript 演化经历。全书不仅讲解了大量语言技术细节层面的演进,更复盘了更高层面上规范制定与标准博弈中的历史成败,是一部讲述人类如何在商业与技术上的竞争合作中促进产业发展的故事
现在被知乎的doodlewind雪碧大兄弟翻译,从语言诞生,创立标准,改革失败和继往开来四部分讲解javascript如何从一个草鸡语言,发展到现在的繁荣,除了当做八卦看之外,我们能了解现在每个语法,都不是天生如此,也不是某个龟腚,而是诸多的权衡讨论的结果,还能了解现在js的规范TC39组织推进语法改进的方式,而且也是装逼吹牛逼必备的历史知识
你不知道的javascript (小黄书)

https://github.com/getify/You-Dont-Know-JS

http://picx.zhimg.com/50/v2-cc61deeff439a7b786bdfd9170424f62_720w.jpg?source=1940ef5c
深入javascript这本语言的设计细节,首先推荐小黄书系列,你不知道的javascript,英文版github开源,但是我觉得看上册就够了,深入了解原型链,this,闭包,词法作用域等,第一次读到感觉重塑了对js的理解,中册也还不错,关于异步编程和生成器的内容值得一读,下册就算了,就是介绍了一点es6, 期待第二版
how javascript works(电子书和书)

https://book.douban.com/subject/30362974/

http://pica.zhimg.com/50/v2-81c24549781a6cc3501564a7caa97d3d_720w.jpg?source=1940ef5c
还有一本就是精粹的作者写的 how javascript works,我还在等国内发行,github有开源的版本可以阅读,探究js的执行原理和一些高级的api,比如v8引擎,内存管理,webassembly,mutationObserver, 性能优化,语法解析,shaodowdom等方方面面,据说中文版死月翻译中,期待一下
这两本电子书都出版的话,我一定多买点送人
javascript语言精粹与编程实践

https://book.douban.com/subject/35085910/

http://pic1.zhimg.com/v2-ffb5ceebd84f32956961b522214b3624_r.jpg?source=1940ef5c
然后重磅推荐我认为讲解js的《九阴真经》,绿宝书,《javascript语言精髓与编程实践》,第三版比第二版足足厚了一倍,不是着重于某些功能实现,而是讲解修炼内功的大道,开篇就是《天之道,损有余而补不足》,从结构化,面向对象,函数式,并行和动态五方面来讲解js的本质,我整整看了七月份一整个月,简短的语言无法介绍这本书,我们专门录了一个《前端会客厅》 邀请到作者周爱民老师详细讲解这本书,欢迎去观看
https://www.bilibili.com/video/BV1M5411a7GK

http://picx.zhimg.com/v2-2f01d7dd05354421c7c734dae47c7490_r.jpg?source=1940ef5c
标准文档ECMA

https://tc39.es/ecma262/
如果你足够大神,可以直接看标准文档, 不过很惭愧,我一直没有读完这份pdf,争取明年仔细学习一遍,如果能看完这个pdf,上面的小黄书之类的就不推荐了
标准组织TC39

https://github.com/tc39/proposals
大家看完了那本《javascript20年后》,就会知道javascript语言的发现,现在是由一个叫tc39的组织在推进,大家可以去github围观各个提案,比如最近进stage3的class fileds是一个极具争议的提案,其他的private-methods,   top-level-await,temporal时间api,都值得期待
关于tc39,大家可以关注tc39委员会成员贺师俊hax,前端会客厅第三期也邀请到了贺老一起聊tc39,欢迎移步B站
https://www.bilibili.com/video/BV1xT4y1L7ui

http://pic1.zhimg.com/v2-b9ce6dcefde911c5d6ab2660b2b2b606_r.jpg?source=1940ef5c
小而美迷你书

最后再推荐一些迷你的小书和一些经典过时的书把
《javascript迷你正则书》 《javascript编程精解》用游戏的方式讲解js,很不错
dom启蒙,javascript异步编程,javascript面向对象精要,javascript函数式编程指南, 都是一些垂直场景的小书,值得一看
javascript迷你正则书

https://github.com/qdlaoyao/js-regex-mini-book

http://picx.zhimg.com/v2-e280939ba37bdb491b116e1692eed723_r.jpg?source=1940ef5c
JavaScript编程精解(第3版)

英文在线版
游戏式教学 体验不错
https://eloquentjavascript.net/
https://book.douban.com/subject/35011711/

http://pica.zhimg.com/v2-f85f450219d8233d9ad71318e963b1b2_r.jpg?source=1940ef5c
dom启蒙

https://book.douban.com/subject/25882606/

http://pic1.zhimg.com/v2-bbe2bb18ed8c1f7975705526ee3ec8b8_r.jpg?source=1940ef5c
javascript函数式编程指南

https://book.douban.com/subject/30283769/

http://picx.zhimg.com/v2-2a6b05cdfd23cc6285dd7f9f20d3256d_r.jpg?source=1940ef5c
JavaScript异步编程

https://book.douban.com/subject/24319975/

http://pic1.zhimg.com/50/v2-e1b2a081c421eb370dbc79bac7c9720c_720w.jpg?source=1940ef5c
JavaScript面向对象精要

https://book.douban.com/subject/26352658/

http://pic1.zhimg.com/v2-49e9f60770b7cf83e0e9ab034758b8ea_r.jpg?source=1940ef5c
略微过时,经典,值得一读

还有犀牛书,蝴蝶书和这本精通javascript开发,都是略微过时但是值得一读的经典书目,尤其犀牛书,这是对我影响最大的js书,我当年对js的进阶,就是看了四遍犀牛书,阅读体验比红宝书差一些,更全更像文档一些,只不过现在过时了一些,期待第七版的发布,到时候再买一本做推荐
然后es6相关的一些书也不是很推荐了,直接上红宝书把,比如阮一峰老师的es5标准入门,适合作为工具书查阅细节,红宝书作者写的深入理解es6,实战ES2015都不太推荐了

http://pica.zhimg.com/v2-a0e3372124053d5a72a887b899d7b570_r.jpg?source=1940ef5c
不太推荐(连犀牛书都过时了)


http://picx.zhimg.com/v2-0bfbd39d21543c3a17265e7db201b8fa_r.jpg?source=1940ef5c
,最后大部分动物书都过时了,不推荐阅读了富应用开发,设计模式,模式,高性能,可维护,数据结构和算法, 还有当年很喜欢的ppk,月影的王者归来,现在都不推荐了
最后总结一下,最简单粗暴的路线,就是红黄绿三步走,红宝书体系化,小黄书进阶语言细节,绿宝书学习javascirpt设计思想,其他的作为横向扩展
最后讲解一下午自己的学习心得,现在vue ,react框架满天飞的时代,很多前端不愿意深入js了,这是很不对的做法,行走江湖,js就是我们手中的大保健,框架固然重要,那是武功秘籍,最终能决定我们能走的多远的,还是我们对兵器本身的理解和内力,希望大家都能在js学习的路上有自己的心得体会,欢迎在留言区交流
当然前端也不能只学js,还有css,计算机基础,甚至还有些吹牛逼的书需要看,给大家秀一下午的书架,大家感兴趣的书也可以发在留言去后续我测评一下,

tubal 发表于 2023-10-4 06:59:08

推荐几本!
经典的红皮书:
作为JavaScript技术经典名著,《JavaScript高级程序设计(第3版)》承继了之前版本全面深入、贴近实战的特点,在详细讲解了JavaScript语言的核心之后,条分缕析地为读者展示了现有规范及实现为开发Web应用提供的各种支持和特性。
爱民老师新出的:
JavaScript 是一门包含多种语言特性的混合范型语言,在面向对象和函数式语言特性方面表现尤为突出,且在 ES6 之后所添加的并行语言特性也极为出色。《JavaScript语言精髓与编程实践(第3版)》基于 ES6,并涵盖 ES2019 规范,全面讲述 JavaScript 在五个方面的语言特性,以及将这些特性融会如一的方法。本书不但完整解析了 JavaScript 语言,还逐一剖析了相关特性在多个开源项目中的编程实践与应用,是难得的语言学习参考书。
本书作者在前端开发领域经验丰富、深耕不辍,一书三版,历经十余年。书中对 JavaScript 语言的理解与展望,尤其适合期望精通这门语言的中高级程序员和语言实践者阅读。
还有下面这个系列也不错:
《你不知道的JavaScript 上卷》:很多人对JavaScript这门语言的印象都是简单易学,很容易上手。虽然JavaScript语言本身有很多复杂的概念,但语言的使用者不必深入理解这些概念就可以编写出功能全面的应用。殊不知,这些复杂精妙的概念才是语言的精髓,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解它们。在本书中,我们要直面当前JavaScript开 发者“不求甚解”的大趋势,深入理解语言内部的机制。
《你不知道的JavaScript 上卷》既适合JavaScript语言初学者阅读,又适合经验丰富的JavaScript开发人员深入学习。

《你不知道的JavaScript 中卷》:JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解。本套书直面当前JavaScript开发人员不求甚解的大趋势,深入理解语言内部的机制,全面介绍了JavaScript中常被人误解和忽视的重要知识点。本书是其中卷,主要介绍了类型、语法、异步和性能。

《你不知道的JavaScript 下卷》:JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解。本套书直面当前JavaScript开发人员不求甚解的大趋势,深入理解语言内部的机制,全面介绍了JavaScript中常被人误解和忽视的重要知识点。本书是其下卷,主要介绍了JavaScript入门知识和对ES6及未来发展趋势的展望。 本书既适合JavaScript语言初学者了解其精髓,又适合经验丰富的JavaScript开发人员深入学习。
设计模式可以考虑:
《JavaScript设计模式》共分六篇四十章,首先讨论了几种函数的编写方式,体会JavaScript在编程中的灵活性;然后讲解了面向对象编程的知识,其中讨论了类的创建、数据的封装以及类之间的继承;最后探讨了各种模式的技术,如简单工厂模式,包括工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式,以及外观模式,包括适配器模式。本书还讲解了几种适配器、代理模式、装饰者模式和MVC模式,讨论了如何实现对数据、视图、控制器的分离。在讲解MVP模式时,讨论了如何解决数据与视图之间的耦合,并实现了一个模板生成器;讲解MVVM模式时,讨论了双向绑定对MVC的模式演化。本书几乎包含了关于JavaScript设计模式的全部知识,是进行JavaScript高效编程必备的学习手册。
  《JavaScript设计模式》适合JavaScript初学者、前端设计者、JavaScript程序员学习,也可以作为大专院校相关专业师生的学习用书,以及培训学校的教材。
ES6推荐下面的这本:
【内容简介】
    ES6是ECMAScript标准十余年来变动大的一个版本,其中添加了许多新的语法特性,既有大家耳熟能详的Promise,也有闻所未闻的Proxy代理和Reflection反射;既有可以通过转译器(Transpiler)等方式在旧版本浏览器中实现兼容的let、const、不定参数、展开运算符等功能,亦有无论如何都无法实现向前兼容的尾调用优化。深入理解ES6的特性对于所有JavaScript开发者而言至关重要,在可预见的未来,ES6中引入的语言特性会成为JavaScript应用程序的主流特性,这也是《深入理解ES6》的初衷。希望你通过阅读《深入理解ES6》可以了解ES6的新特性,并在需要时能够随时使用。
和阮一峰老师的:

<a data-draft-node="block" data-draft-type="mcn-link-card" data-mcn-id="1264722003443003392">这些都值得一读

flyren 发表于 2023-10-4 06:59:16

推荐《The Modern JavaScript Tutorial》,中文名《现代 JavaScript 教程》。
现代 JavaScript 教程这个教程是 React 官方文档中与 MDN 并列推荐的 JavaScript 学习教程。这是一个开源的免费教程,并没有出版成书籍,也没有准备出版成纸质书籍。我是本教程中文版的负责人,这个教程维护到现在已经有近三年的时间了,一直也没有对其做宣传,都是读者自己口口相传。这个教程主要有三大特色。
这个教程解决了现存 JavaScript 书籍最大的痛点:实时性。这是本教程的第一大特色。

http://picx.zhimg.com/v2-24f333812613ba5a07564eceb0a0e915_r.jpg?source=1940ef5c
技术领域的书籍在实时性上一直都存在很大的问题,因为技术更新迭代的速度是很快的,而传统纸质书籍的更新迭代的速度则远远落后于此。这也就是为什么本教程没有推出纸质版,暂时也不准备推出。
《现代 JavaScript 教程》以最新的 JavaScript 标准为基准,通过简单但足够详细的内容,为你讲解从基础到高阶的 JavaScript 相关知识。保证了内容能够与最新的 ECMAScript 保持同步。

第二大特色是,为读者搭建了良好的学习路线,由浅入深,内容足够详细也足够全面。当然,这里的全面是指在 JavaScript 语言层面的,不包括 React,Vue 等框架的教学。
这个教程主要分为三个部分:

[*]入门:主要为 JavaScript 语言方面的内容,包括数据类型,循环,对象,闭包,Class,原型,继承,Promise,ES Module 等基础知识。
[*]提升:包括 BOM 和 BOM 的相关内容。
[*]进阶:包括网络请求,Web Components,正则,动画,浏览器缓存等相关内容。

第三大特色是:每节内容后,都给出了高质量的课后习题和解析。通过做题可以帮你检验自己的学习效果,并巩固新学到的知识。

http://picx.zhimg.com/v2-59523ae44585edb944cf1d7c97615d64_r.jpg?source=1940ef5c
维护这个教程也投入了很多精力,当看到读者们表示有所收获,真的感觉很开心。

http://picx.zhimg.com/v2-a518824772ada8f8131639f8a637f5e3_r.jpg?source=1940ef5c
这个教程是开源教程,目前 2.3k Star,并不多。可能很多人都直接在网站上学习教程,也就没来 GitHub 上点个 Star 了   十分欢迎大家参与教程维护,如果阅读的过程中发现错误或者可优化的内容,那就来 PR 吧。

http://pic1.zhimg.com/v2-871e4244ed6c221dea9e646a7931f04b_r.jpg?source=1940ef5c
GitHub 地址:https://github.com/javascript-tutorial/zh.javascript.info
教程网址:https://zh.javascript.info/
本教程核心管理员 @Martin Yang ,@lycheeEng,@bemself,@Kerb。
<hr/>当然,除了推荐这个教程外,今年下半年应该会推出的由李松峰老师翻译的《JavaScript高级程序设计》第四版等书也非常值得购买
<a data-draft-node="block" data-draft-type="mcn-link-card" data-mcn-id="1598384629848879104">
欢迎关注本教程官方微信公众号:技术漫谈
公众号有 LeetCode 算法题解,前端项目从零到一实战,JavaScript 从入门到进阶等系列教程,欢迎一起学习。

wowo0888 发表于 2023-10-4 06:59:31

首先,这个问题是有时效性的。讲JS语言(包括讲Web平台)的书,再经典的书,如果超过4、5年,就一定跟不上形势了。因此目前排前面的JS忍者、JS精粹这两本书因为太老,所以一定是不推荐的。
其次,不可能有一本书能适合所有人,要根据读者目前的水平和目标来定。比如写给完全无编程基础的人的书,和写给有经验的非JS程序员的书,就大相径庭。
所以本质上,我是拒绝推荐「一本」JavaScript 的书的。
下面只是谈一下我认为可以看的书:

[*]阮一峰的《ES6 入门》。阮老师虽然经常被诟病在社交媒体上发布的技术相关评论准确度欠佳,但我认为阮老师这书还是挺好的。这本书最大的优点是,是开源的(repo 为 https://github.com/ruanyf/es6tutorial),算是国内开先河之举,单凭这点就值得赞许。由于开源,任何人都可以给他开 issue 和 PR,因此就算阮老师这书里存在不少缺点,但一直在改进(我有时候也会去评论一些issue)。这本书的缺点是,真的只是入门书,且需要ES5基础。如果你能把MDN上的JS文档看一遍,你基本上就不用看这书了。
[*]getify 的《你不知道的JS》。这个书也是开源的(repo 为 https://github.com/getify/You-Dont-Know-JS),目前作者在写第二版,所以不建议买第一版,建议等第二版。入门到进阶。赞许这本书的人很多了,我就不多说了。我就讲一下这个书的几个小缺点,第一,标题党   ;第二,深入细节太多,不适合新手(这是体例决定的,所以其实不能说是缺点);第三,作者有时候会带一点私货(且往往是我不赞同的私货……),读者需要记得鉴别,必要时可知乎上提问。
[*]Nicolás Bevacqua的《深入理解JS特性》。这个书2017年的,难度介于前两本书之间,个人认为是本相当好的入门书(虽然仍然是从ES6开始讲,所以需要一点编程基础),中译本阅读体验也很良好(感谢译者李松峰老师、冰晶和高峰)。此书原版同样可以在线阅读(https://github.com/mjavascript/practical-modern-javascript)。
[*]Dr. Axel Rauschmayer 的《Exploring JS》系列,大部分内容均可在线阅读。我个人印象,从技术准确度上说,Rauschmayer可能是最好的,而且不夹带私货。缺点,由于诡异原因(出版社和作者失联??),没有中译本。希望国内好的出版社(比如图灵)能重新引进。
[*]爱民的《JS语言精髓》(绿皮书)。最近刚出第三版。虽然不开源,但也有官方repo(https://github.com/aimingoo/js-green-book-3),提供了书中代码,并用于提交问题和勘误。此书气质和市面上所有其他JS书大相径庭,优缺点都很鲜明,具体见我为该书第三版写的序。不建议用该书入门(尽管确实有不少人是从该书第一版或第二版入门的)。有一定基础的,想钻研语言的人推荐看。
[*]Douglas Crockford的《How JavaScript Works》。前面说过,DC的经典之作《JS精粹》太老了,但2019年他出了本新书,内容是DC一贯的opinioned,但是这样才好看——所以此书优点是opinioned,缺点也是opinioned,需要读者有鉴赏力和分辨力。该书翻译难度较高(因为DC经常讲一些怪话,不知道是讽刺还是微言大义),目前是史上最强P6 @死月絲卡蕾特 在翻译,祝他好运。我们群里吹水,可以给该书写评注,集齐三个人,将来出个三家注。
以上。
(如一开始所说,此问题有时效性,可能不定期会更。)

stefanie 发表于 2023-10-4 07:00:31

2020年6月20日 更新:

经提醒,这本书第二版已经有中文版翻译,不过回答的内容还是以原版为准。
原回答:

如果你是做前端的码农,想看英文原版书,我个人推荐《Secrets of the JavaScript Ninja》,可能是因为成书时间比较晚或者是封面和书名看上去有点“中二”的原因,这本书在国内知名度不是很高。

http://picx.zhimg.com/v2-2976b64afce7b4351d242740ec3b0c48_r.jpg?source=1940ef5c

之所以叫JS忍者,是因为融入了作者对日本忍者情节的崇拜

最新的是2016年9月第二版,相较于第一版作了巨大的改动,尤其是增加了ES6 和 ES2017等内容。
我个人的经历中,这本书的第一版和第二版在3个不同时间点看过,给我的启发和指引可谓深远,至今我仍能回想起每一次看过后的心路历程,而且尤其惊人的是在工作面试时对我的帮助和作者对 JavaScript 未来发展的前瞻性。
举个例子,翻开书中第14页:
这不就是前端码农必考的题:“当你浏览器输入一个url 会发生什么?”的完整版答案吗?(14页-28页)

http://pica.zhimg.com/v2-23c25bf4cda8858cbc184691f6ab54c2_r.jpg?source=1940ef5c
这个例子也是这本书神奇的地方:永远从一些具体的实际问题和工程应用入手,而不是纠结于解释太深入和晦涩的语法问题。这本书虽然只有400多页,但是包括的内容可以说是覆盖了 JavaScript 开发的方方面面,它不是红宝书那种字典形参考书,而是更多集中在 JavaScript 基础知识深入研究 + 解决工程问题的痛点上,而且他以一种独特且诙谐的方式把知识点融入到作者对忍者的热爱中。最难能可贵的是不仅全面触及了 JavaScript 的核心,例如函数的第一公民地位,函数的执行上下文,词法环境,Scope,Closure等,还加入了正则表达式,DOM,Curry 数据操作,函数化编程,代码测试等非常贴近现实开发的内容。
再举一个例子,翻开书102页:
也许你看过不少文字或者书给你解释什么叫 JavaScript 函数的执行上下文栈,但是都没有一个 chrome 浏览器截图来的直观和可操作:

http://picx.zhimg.com/v2-1a8dca5085feb6df1ea90b66310a14e0_r.jpg?source=1940ef5c
下一页是讲词法环境,一页内容便把定义,使用环境,使用方式,过去和现在的改版描述的明明白白:

http://picx.zhimg.com/v2-940944a3a0493b45ed450f40ac2c5376_r.jpg?source=1940ef5c
这本书的结构是先易后难,先基础,再扩展,所以如果你是那种喜欢从头到尾读书的,这本书挺适合入门。每个章节的开头会提到这个章节会涉及的实际问题,如果那些问题你都能回答上来,那么对照你的经验去看书中的讲解会让你收获不小。
不过值得提醒的是这本书的内容是面向有一定 JavaScript 或者编程知识的朋友,像最基本的什么叫变量,什么是 primitive data type,if else,while 循环怎么用这类知识是默认你已经熟悉了。
本书一开始就是从上诉例子中的当你输入一个url 后,浏览器会做什么开始说起,逐步涉及到 JavaScript 如何被解析,DOM 创建,Event loop等等细节。
我个人从最初几章的函数作为第一公民收益非浅,只有当你彻底理解这点,才能真正理解scope,执行上下文(Execution Context)乃至ES6的词法环境 (Lexical Environments)以及Closure,callback,这对于学习期间从C++/Java 开始接触编程的我来说尤其痛苦,JS 那堆反直觉的变量定义提升,this 根据执行环境变化经常让我混淆,正是这本书让我更快的完成了体系转变。
个人阅读本书的历程:
第一次接触是2012年刚刚毕业还在找工作的时候,被 JavaScript 的 Immediately-Invoked Function Expression (IIFE)搞得头昏脑胀,那时在网上搜索这个概念,被一个很新奇的网站一步一步教你学习IIFE 给吸引,最后才发现是 jQuery 作者 John Resig 为新入门的码农准备的一个练习,而他也把这些年对 JavaScript 深入的思考写成了后来这本书 《Secrets of the JavaScript Ninja》。工作之后,那时的前端还是jQuery 的天下,正在往库和工程化的 angular ,backbone 转换,当我一边工作一遍搜索 JavaScript 各种解决方案,系统教程时才发现这本书出版了,不过那时买来更多是囫囵吞枣,甚至都没有完整通读一遍,只是把想了解的高级技巧看一遍,照猫画虎的模仿里面的用法,但是读下来依然有一种醍醐灌顶的感觉。
第二次接触是2016年换工作,很惊喜的发现作者居然在2016年9月更新了第二版,大量的更新和架构调整,例如全面系统的讲解了 Promise 的实现,ES6的更新内容,箭头函数等,多亏这些多出来的更新章节,我也重新系统化学习了一遍ES6新功能和理解了为什么要增加这些功能,这对我那次换工作面试起到了极其重要的作用。就像所有编程语言一样,只有当你实际上手足够多的项目实践后,书上提到的那些痛点和解决办法才能引起你的共鸣,而工作了4年后再重读这本书,平时那些零散的经验方法在书中深入讲解后终于融会贯通,更多的是一种豁然开朗感。
第三次拿起是2019年换工作,我继续重复之前的习惯:把自己基本知识再夯实一遍,查漏补缺,由于之前的经验,我毫不犹豫的又拾起了这本书,这次看得更快,但是我依然不敢跳过对基本概念的复习,彼时ES6早已大量且广泛应用到前后端工作中,Babel 转译甚至都不再必须,我做的第一件事是去看作者是否有更新这本奇书,很可惜,并没有,版本依然基于2016年9月的第二版,但是第三次通读这本书,依然让我受益匪浅:而最让我惊讶的是,书中4-5年前作者写下的文字,如今正在变成面试题和工程代码:
书中146页的 Promise 实现和工程应用,现在稍稍高级一点的面试都会让你去手写个 Promise 实现。
书中158页讲解了如何用yield 和 generator 实现 async 和 await,这正是2017年才发布的ECMAScript 2017 囊括的内容,也是现在面试考察的新热点。
书中327页详细讲解了 DOM 的批量操作会引起的页面性能下降,而提到了 FastDom 的解决方案,还专门说到了 React 等库类似的 Virtual DOM 操作。
书中333页讲解的 JavaScript 事件处理的宏任务和微任务现在是核心面试的必考考题。
书中389页讲解的 Destructure 赋值,在如今React, Vue,Redux 中大行其道。
最后的附录还收录了浏览器Debug 和调试方法,这种非常接地气的做法在很多工具书上都找不到。
到了2020年,Closure 依然是初级程序员必备的题目,不过由于箭头函数,Let 等广泛应用,很少在面试题中出现了,同理,现在Apply,Call 的用途也不是面试和工作的中心了,不过这本书也同样用不小篇幅来解释和教你如何更深入的理解他们以及背后的 Scope 域。
如果真要说缺点,可能就是这本书每章后的练习题过于简单,不需要多少时间思考,也没有完全深入研究这章节的核心,所以你基本不会看到任何面试题在上面,算是个缺憾吧。
所以对于这本跨度近10年的好书,如果你是打算入门 JavaScript 或者已有经验但是希望系统性学习它和应用它,我在这里诚心推荐。
页: [1]
查看完整版本: 如果只能推荐一本 JavaScript 的书,你会推荐哪本?