关于 JavaScript 的好书有哪些?

关注者
3104
被浏览
296949

66 个回答

这个问题我有发言权。
因为我就是照着知乎前人推荐的书一本本看过来的。

这是我这一年多点看的书。少了三四本书,给别人借走了。
(上面的书并没有全部看完,有些昏昏欲睡的书可能需要我境界再高点才适合看。顺便请无视那本乱入的Android入门)

所谓的和书一拍即合相见恨晚,其实就是在合适的阶段遇到了合适的书。

所以我会按照时间顺序来推荐那些对我影响很大的书,我会给出在那个阶段的思考和这本书对我的启发。
希望你能和我一样在合适的阶段遇上合适的书。

---------------------------------------------------------------

3.7 晚 修正了一大堆拼写错误,让语言得体了一点。

---------------------------------------------------------------

正文

1. JavaScript DOM 编程艺术

这本书作为被大家推荐的最多的前端入门书籍是有道理的。
他能真正让大家了解dom脚本编程,或是说前端编程技术背后的思路和原则。

对于初学者来说,这本书没有任何门槛,按部就班跟着书籍实例编写代码即可。
我们会知晓如何对浏览器元素操作和掌控,会学会如何实现简单的页面效果。
这种简单易得的成就感是一个编程语言入门时最难能可贵的体验。

阅读建议:
这本书虽然简单,但是能让人快速对前端产生兴趣和成就感。
不过后续学习jquery的时候可能会产生挫败感。原生js dom操作的成就感会被jquery便捷的API所彻底打败。所以一定要恰当的调整心态,转换思维方式,正确认识到jquery和原生js分别的优劣之处。
在熟练使用jquery后还能想起来翻看这本书,找到之前未曾发现的闪光点,就是入门成功了。

2. JavsScript高级程序设计(第三版)

无论何时,这都是学习js最好的书。

如果说其他的书都是在合适的阶段会有不一般的体验。
这本书就是无论什么阶段,都够你感悟一番的。

当你看完了市场上js相关(不包括框架类库的最佳实践类)的所有书籍。你再回去看这本书,也会发现其实95%的内容早就写在这本书里了,只不过你当时等级不够,根本没有意识到。

这本书排版舒服,翻译得体,内容丰富,语言流畅。涵盖了js语法(面向对象,闭包作用域等),js使用(dom,bom,html5API),编程实践(高阶函数,编码规范)等程序员使用javascript时会遇到的大部分问题。

(今天在上海面试了一天。大部分很顺利,只是有几个比较偏的问题没回答好。晚上回去之后一翻高程三,果然在里面都写得明明白白的。不得不服。)

阅读建议:
人们喜欢把他和犀牛书拿一起推荐,不过就我看来,他们完全不是一个可读性上的。
一个是课本一个是字典。而且还是佶屈聱牙的字典。

所以无论何时我都会把高程三排在js推荐书籍的第一位。

3. 锋利的jQuery
图忘了拍了,就不补了。

这本书如果紧接着dom编程看,会如我我说的那样瞬间摧毁你的小小的成就感。
因为这本工具书级别的书简单暴力到不给你思考什么“平稳退化”,“js动画计时器”这些dom编程中提及的问题,就直接就甩出一大片简单有效的jqueryAPI颠覆你的世界观。

这本书是如此的易懂以至于看完之后瞬间就觉得自己能把web玩出一片花来了。

作为工具书级别的书,或是说学习jqueryAPI的书,这是首选。

阅读建议:
熟悉jquery是每个前端必须要会的事。
只是不要被Jquery的便捷迷惑,而抛离原生js,把原生js贬得一文不值,否则后面会付出昂贵的代价。

4. 学习Javascript数据结构与算法

这本书相对是一本冷门书。

为什么我会推荐他,是因为他能解决每个半路出家的js程序员都曾思考过的一些问题:
1. 我们的数组Array这么强大,要栈Stack,队列Queue这些功能少,半半拉拉的东西干什么呢?
2. 我们学的数据结构搞来搞去好像也就那些玩意,为什么被大家这么推崇,还要分门别类讨论呢?

所以这本书只是为何告诉你上面这些问题的答案:
1. 栈和队列本来就没有Array功能强。没有Stack和Queue类只是因为ES5不去实现它而已。作为一种相互之间存在一种或多种特定关系的数据集合,其存在意义是不应该被其功能强大与否来决定的。
2. 数据结构和编程语言无关。语言死了,他们会在下一门语言里重生。哪怕计算机死了,他们都会在下一个概念体里重生。

阅读建议:
跟着书本把这里面的结构全部敲一遍,快的话一天就能搞定。
从此你便再不怕惧怕js相关的简单数据结构问题。
但是,遇上高级的树,图等问题该跪还是要跪。因为这本书虎头蛇尾,后面的高级点的数据结构介绍的不够深。
适合经常反思“它从哪里来,要到哪里去?”的js程序员,或后悔以前数据结构没好好学的前端同学。

5. JavaScript设计模式与开发实践

我认为腾讯AlloyTeam的这本书对我帮助媲美高程三。

那时候我恰好换公司,从原来的开发方式切换成另一种完全不同的开发方式,让我很不适应。

这本书及时的蹦出来,他拿实际的应用场景举例,告诉你不同js项目里如何共通设计模式,还极其详细的介绍了函数的高级用法,能让你对js高阶函数的认知上升一个台阶。
难能可贵的是他还拿java作为静态语言的类比。从语言统一高度来给你分析这些问题。

和上本介绍数据结构的书一样,这本书有的放矢,能完美的解决对js设计模式有疑问的同学的实际问题。
他比上本书更深刻,更易读,也更贴近实践。

阅读建议:
这是本适合反复阅读的书籍。
如果你的思路能根据应用场景自动切换到最适合的设计模式,说明你已吃透这本书了。

6. 高性能JavaScript
作为Orelly唯一一本我确实认可的javascript相关的书。
他摒弃了Orelly系列所有我不喜欢的特点:
老外的聊天说教式阅读体验,样例不够丰富,排版单一,破事水等。

他的优点如下:
1. 情景丰富,基本涉及所有js性能优化的场景。还会给出不同场景的实际测试数据,真实可信。我们在阅读这些场景实例的同时也丰富了自己js的使用经验。
2. 给出了很多看似"旁门左道"的解决方案,而这些冷门的解决方案恰恰是有些人死活百度不到的真正能解决问题的最优解。
3. 在说问题的同时说原理,深入浅出,游刃有余。所以这本书不仅仅是一本介绍js性能相关的书,而是一本涉及浏览器原理,js解析原理,用户体验等知识的javascript最佳注解。

阅读建议:
建议和高程三一起看,可以算是高程三阅读的最佳伴侣。
高程三告诉你“他叫什么,他什么样”,
这本书就告诉你“他为什么”,“他该怎样”。

所以,当别人还在为某些问题绞尽脑汁的时候,你已经从起点上干翻他们了。

7. 你不知道的JavaScript(YOU DONT KNOW JAVASCRIPT)
大名鼎鼎的Github开源的书籍。

为了他的名气我也得买一本实体书来拜读下。
这本是上卷,只涉及作用域和闭包,this和对象原型两部分。

不过其深入程度是其他js书籍难以企及的。
可以说,这已经是大部分前端程序员对js语法可以深入了解的最底层了,再往下就直面编译原理了。

阅读建议:
用于提升自己的js语法的理解等级。
对于进入工作第二年的想深入理解js语法的同学来说特别有效。


=================================

上面就是这一年多看的我认为不错的书了。

如果有基本完全一致的同学,我们可以交流下心得~~
JavaScript的入门书,纸质里面最好的是《JavaScript DOM编程艺术》 book.douban.com/subject,抱歉出第一版的时候没仔细看书,而且那时还不太懂DOM,书名给起坏了。电子书可以看Eloquent JavaScript eloquentjavascript.net/

大厚本里Zakas的《JavaScript高级程序设计》 book.douban.com/subject和犀牛书《JavaScript权威指南》 book.douban.com/subject都是经典。价钱和出版时间上红皮书有优势,另外个人不太喜欢犀牛书这种字典性质的。犀牛书中文版新版不知道什么时候出。

有编程经验的人学JavaScript,可以直接看老道的《JavaScript语言精粹》 book.douban.com/subject

高级一点的,可以看Zakas的《高性能JavaScript》 book.douban.com/subject

还有Resig的Secrets of the JavaScript Ninja了,跳票N久。

剧透:上面这些书大部分是我确定的选题引进的,所以会有偏见。仅供参考。
为什么?