原文连接:How to Learn JavaScript Properlyjavascript
恰当地学习 JavaScript (适合第一次编程和非 JavaScript 的程序员)css
继续下面的课程。html
更新(2013年 9月 16日):java
几天前成立了刚刚开始这个路线图的学习小组,因此此时加入他们是个好时机。这个过程里你将会获得不少的支持和鼓励。更多访问下面的连接(由Felicia O’Garro组织):
CodeCrew JavaScript Study Groupjquery
注意下还有个基于 Reddit 的学习小组,其余的大部分小组在记在下面的评论里。但这些小组已经从几个月前就开始了。程序员
这个课程的概要给出了有结构性和启发性的路线图,如何恰当完整地学习 JavaScript 从纯粹的初学者到达到新的阶段.web
你确实打算学习 JavaScript,这是在这里的缘由,若是你打算开发现代的网站和 Web 应用(包括互联网创业),这是明智的选择。尽管网上有大量教你 JavaScript 的资源,可是找到学习“Web 的语言”最高效和最有益的方法并不容易而且会使人沮丧。正则表达式
值得注意的是,不像前几年那样,你须要知道真正服务端的语言(例如 PHP,Rails,Java,Python,或者 Perl)才能开发可扩展的,动态的,数据库驱动的(database-driven)Web 应用程序,如今你能够单独使用 JavaScript 作到一样的甚至更好的效果。数据库
初学 JavaScript 时,不要尝试那些一小段(bits of)跟 JavaScript 无关或者相关的在线教程。这是学习编程语言最糟糕的方式。无数次地学习这样的教程会有些用,但这个过程效率底下,缺少完全学习主旨所需的恰当的层次结构。这致使在开始创建网站和 Web 应用程序时,你会常常不知所措。总之,你不会学到,把这语言当成工具——你的工具来使用的实际知识。编程
此外,有些人会推荐你看《JavaScript 语言精粹》(JavaScript: The Good Parts)来学习 JavaScript,这本书是德高望重的 JavaScript 教父 Douglas Crockford 写的。尽管 Mr. Crockford 在 JavaScript 方面知识渊博,被视为 JavaScript 界的爱因斯坦,可是他的书《JavaScript 语言精粹》对初学者来讲用处并不大。这本书没有以透彻清晰和容易理解的方式解释 JavaScript 的核心概念。我推荐你看下 Crockford 的高级视频。不过这本书能够作为高级路线图的一部分。
不要尝试只用 Codecademy 来学习这门语言,由于尽管你知道如何编写很是小的 JavaScript 程序片断,却绝对没有学会足够的知识去构建一个 Web 应用程序的。不过我在下面补充的学习资源里推荐 Codecademy 。
更新:Reddit 用户 d0gsbody 刚在(4月8日) Reddit 为这个路线图建立了一个学习小组。他和这个小组的成员热心助人而且很是活跃。我推荐你参加这个小组,他们会保持你的积极性和帮助你按本身的方式学习 JavaScript 。本身从头开始学习 JavaScript 是很困难的。这是小组的连接:[Learning JS Properly – Study Group on Reddit.](Learning JS Properly – Study Group on Reddit.)
咱们使用两本书的其中一本,一本是对编程初学者来讲很是理想的,若是你只有有点编程经验,另外一本更好。
你可使用下面两本书的其中一本:
我我的很是喜欢第一本书,由于做者讲解主题很是棒,涵盖了高级 JavaScript 主题。不过,若是你至少了解一些很是基础的 Web 开发,最好使用这本书。所以,若是你只有点编程或者 Web 开发(没必要是 JavaScript) 经验,购买这本书:
平装版:JavaScript 高级程序设计
Kindle 版:JavaScript 高级程序设计
或者:
若是你没有编程经验,购买这本书:
JavaScript 权威指南
JavaScript 权威指南
注册一个 Stack Overflow(免费服务)账号。这是一个程序设计领域的问答网站。这个网站回答你的编程问题比 Codecademy 更加有用,甚至是很是基础,看起来彷佛很愚蠢的问题(记住,历来没有愚蠢的问题)。
注册一个 Codecademy 账号。这是一个在线学习编程的平台:你在网站写代码,浏览器就正确显示结果(这一样也是免费服务)。
JavaScriptIsSexy博客的文章关注对象,闭包(Closures),变量范围,Hoist,函数还有更多。
若是要完成整个课程要点,你将会在 6 到 8 周 里学习几乎所有的 JavaScript 语言(还有 jQuery 和一些 HTML5)。若是你没有足够的时间在 6 周内完成所有的章节,学习时间尽力不要超过 8 周。学习的时间越久,你掌握和记住学到的东西就越困难。
若是你没有很好地了解 HTML 和 CSS,那么就去 Codecademy 完成 Web 基础的历程(Track)。
阅读《JavaScript 权威指南》的前言和第 一、2 章。或者《JavaScript 高级程序设计》的介绍,第 一、2 章。
完成在 Codecademy 上 JavaScript Track(历程)《介绍 JavaScript》章节。
阅读《JavaScript 权威指南》的第 三、4 章。或者《JavaScript 高级程序设计》的前言和第 三、4 章。你能够跳过 位操做(Bitwise Operators)这个章节。几乎在你的 JavaScript 生涯用不到这些知识。再次强调,务必停下来在你的浏览器控制台(或者 JSFiddle)编写示例代码,还有作下实验—— 改变一些变量的值和微调(tweak)一下代码。
阅读《JavaScript 权威指南》的第 5 章。这步不用阅读《JavaScript 高级程序设计》,你已经在这本书的上一节学了这些知识。
完成 Codecademy 上 JavaScript Track(历程)的第 2 到 5 章节。
看个人这篇文章《JavaScript Objects in Detail》。或者《JavaScript 权威指南》的第 6 章,或者《JavaScript 高级程序设计》的第 6 章。注意:只阅读 “理解对象(Understanding Objects)” 章节。这三个里哪一个都行,尽管这两本教材深刻更多的细节,若是你阅读并彻底地理解个人文章,能够自信地跳过额外的细节。
阅读《JavaScript 权威指南》的第 七、8 章,或者阅读《JavaScript 高级程序设计》的第 5 和 7 章。
回到 Codecademy 完成 JavaScript track 的 六、七、8 节((Data Structures (数据结构)到 Object 2(对象))。
当你在 Codecademy,开始构建在Projects track 5个小的基本项目。以后,就完成了 Codecademy。这是件好事,由于你本身实践得越多,学得就越快,为开始本身独立编程准备得就越多。
在http://try.jquery.com/完成所有的jQuery 课程。
在你创建第一个项目以前,若是你打算成为 JavaScript 开发者或者常用 JavaScript,你如今应该休息下,下载 WebStorm 的试用版。在这里(特别为这个教程而写)学习如何着手。
毫无疑问 WebStorm 绝对是 JavaScript 开发者最棒的编辑器(IDE)。当 30 天的试用期到期以后须要花费 $49.00 美圆,但这极可能是你做为 JavaScript 开发者,除了购买这个课程学习 JavaScript 使用的书以外最好的投资。
确保你设置了 WebStorm 使用了 ** JSHint**。 JSHint 是
此时,你已经学习足够的知识来构建一个可靠的易管理的 Web 应用。除非你可以成功地构建我在下面描述的应用,不然不要继续。若是你有困惑,在 Stack Overflow 提问并从新阅读书里的章节,彻底理解概念。
你正在构建一个 JavaScript 提问应用(你也会用到 HTML 和 CSS),具有的功能以下:
// Only one question is in this array, //but you will add all the questions. var allQuestions = [{question: "Who is Prime Minister of the United Kingdom?", choices: ["David Cameron", "Gordon Brown", "Winston Churchill", "Tony Blair"], correctAnswer:0}];
记住保持在 Firefox 控制台把示例代码敲出来,而且稍微修改每一个片断的代码,作下实验,真正地理解它是怎样工做和作了什么。
这时,你应该以为 JavaScript 很是舒服,极可能以为像是绝地武士。你还不是一个绝地武士,必须持续使用你最新学到的知识和技能,尽量地常常持续学习和提升。
进一步改进你的 Quiz 应用:
稍后(在你学了 Backbone.js 和 Node.js),你将会使用这两种技术重构你的 quiz 代码,使用最新的 JavaScript 框架把一样的 quiz 变成精致(sophisticated),单页面(single-page)的现代 Web 应用。你能够存储用户的认证证书和得分在一个 MongoDB 数据库里。
祝你学习一切顺利。永不言弃!当你挣扎并感到无知时(你可能时常如此),总要记住,世界上许多(极可能大部分)其余新手,甚至有经验的程序员都有可能遇到这样的状况。
当你第一次学习编程时,尤为是过了青少年时期(pass your teenage years),刚开始都是很困难的。青少年没有恐惧,没有失去的东西,而且能够在充满热情的东西投入大量的时间。因此对他们来讲,只有简短的障碍才会出现挑战。
可是在青少年时期以后,你想快速获得结果,由于没有充足的时间花费大量的时间在看似可有可无的小事上。可是你必须深刻了解这些东西,而且不要泄气。只是继续并坚持这个任务或者寻找 bug 直到搞定它。由于值得的奖励在最后成功的时候等着你 ————编程颇有趣而且有利益回报的(lucrative)。
从构建应用程序获得的使人满意的乐趣和热情,是种美妙的感受,这种感受必须体会过才能理解。不过更使人满意的是,当你意识到你已经学到了从头开始构建应用程序的技能和知识,就会体会到的承认(empowerment)。
这一刻将会来临,当意识到忍耐全部的困难是值得的,由于你成为了程序员而且你知道做为 JavaScript 开发者的前途是光明的。就像你以前经历过成千上万的:你在最难(toughest)的 bugs,妥协与放弃中存活了,你打败了退出的找借口。
当你创建了一些东西,即便是微小,小巧玲珑的项目,请随意(Feel free)跟咱们分享你的连接。