既然你找到這篇文章來,說明你是真心想學好JavaScript的。你沒有想錯,當今若是要開發現代網站或web應用(包括互聯網創業),都要學會JavaScript。而面對氾濫的JavaScript在線學習資源,倒是很難找到一份高效而實用的方法去學習這個「web時代的語言」。javascript
有一點須要注意,幾年前咱們須要知道一個真正的服務器端語言(好比PHP,Rails,Java,Python 或者 Perl)去開發可擴展,動態的,數據庫驅動的web應用,而如今只用JavaScript就能夠實現了。html
學習時長:6~8周java
學習前提:中學水平,無需編程經驗node
在Reddit上建立了一個學習小組
January 2014, 「Learn JavaScript」 Study Group on Redditjquery
上面的課程大綱提供了一個結構化和富有啓發性的學習線路,從初學者到有所建樹,把JavaScript學對學透。git
不要一開始就埋頭在成堆的JavaScript在線教程裏 ,這是最糟糕的學習方法。或許在看過無數個教程後會有點成效,但這樣不分層次結構地學習一個東西實在是十分低效,在實際用JavaScript創建網站或web應用時你仍是會頻繁的卡住。總的來講,這種學習方法會讓人不知道如何將語言當作工具來使用——當作我的工具來用。程序員
另外,也許有人會建議從尊敬的JavaScript教父Douglas Crockford寫的《JavaScript語言精粹》開始學習JavaScript。然而,雖然Crockford先生對JavaScript無所不知,被譽爲JavaScript世界的愛因斯坦,但他的《JavaScript語言精粹》並不適合初學者學習。這本書沒有通透、清晰、明瞭的闡述JavaScript的核心概念。但對於更高級的學習路線,我倒會建議你看看Crockford先生的視頻。github
還有,不要只從Codecademy等網站學習JavaScript,由於即便知道怎麼編寫一大堆JavaScript代碼小片斷,仍是不能學會怎麼創建一個web應用程序。即使如此,在後面我仍是會建議把Codecademy當作補充的學習資源。web
更新:Reddit用戶d0gsbody
4月8號在Reddit上創建了一個學習小組。他和其餘組員都很是積極和樂於助人。我建議你加入這個小組,他們會讓你保持積極性且幫助你更好的學習JavaScript。畢竟獨自折騰JavaScript仍是有點難度的。連接:Learning JS Properly – Study Group on Reddit正則表達式
請在如下兩本書中選一本,第一本比較適合有編程經驗的人,而另外一本則適合徹底沒有編程經驗的初學者。我我的推薦第一本書,由於做者對各個知識點都闡述得很是好且涵蓋了一些高級JavaScript知識點。可是,要看懂這本書你至少要對web開發有必定的基本瞭解。因此,若是你有一點點編程經驗或者web開發經驗(不必定是JavaScript),那就買這本書吧。
若是你沒有編程經驗,能夠買這本:
免費註冊Stack Overflow,這是一個編程領域的問答論壇。在這裏提問題獲得的回答比Codecademy要好,哪怕你的問題很是基礎,看起來很傻(記住,歷來沒有愚蠢的問題)。
完成整個課程大綱須要花上6~8周的時間,將學會完整的JavaScript語言(包括jQuery和一些HTML5)。若是你沒有時間在6個星期裏完成全部的課程(確實比較有挑戰性),儘可能不要超過8個星期。花的時間越長,掌握和記憶各類知識點的難度就越大。
Introduction to JavaScript
部分。位操做
部分,在你的JavaScript生涯中通常不會用上這個。再次說明,記得要不時停下來把書本的代碼敲到瀏覽器控制檯裏(或者JSFiddle)作各類測試,能夠改變幾個變量或者把代碼結構修改一番。
如下三選一:
兩本書會涉及更多的一些細節,但只要看完個人博文,你能夠徹底放心地跳過這些細節。
持續地練習,這一點點的進步積累起來效果會很是驚人。你要看到這個策略的價值,相信它是可行的,全心投入進去。
**Codecademy會形成已掌握的錯覺。** 使用Codecademy最大的問題是,它的提示和代碼小片斷會讓人很容易就把答案作出來,形成一種已經掌握這個知識點的錯覺。你可能一時看不出來,但這樣作你的代碼就不是獨立完成的了。 但目前爲止,Codecademy依然是學習編程的好幫手。特別是從一些基本的代碼結構如if語句,for循環,函數和變量去指導你瞭解小項目和小應用的開發過程。
你也能夠在《JavaScript權威指南》第19章瞭解更多的jQuery知識。
此時,你已經掌握了足夠的知識去創建一個穩固的,可維護的web應用。在作完我爲你設計的這個應用以前不要看後面的章節。若是你卡住了,去Stack Overflow提問而且把書上相關的內容從新看一遍直到徹底理解這些概念。
接下來開始創建一個JavaScript問答應用(還會用到HTML和CSS),功能以下:
// 這裏只演示一個問題,你要把全部問題都添加進去 var allQuestions = [ { question: "Who is Prime Minister of the United Kingdom?", choices: [ "David Cameron", "Gordon Brown", "Winston Churchill", "Tony Blair"], correctAnswer: 0 } ];
或者閱讀《JavaScript高級程序設計》第20,23章。
升級以前作的問答應用
本地存儲
(local storage,HTML5瀏覽器存儲)。用戶名
回來」。或者閱讀個人博文JavaScript面向對象必知必會
或者閱讀《JavaScript高級程序設計》第6,16,22,24章,第6章只讀「建立對象」(Object Creation)和「繼承」(Inheritance)部分。注意:這部分是本課程中技術性強度最大的閱讀,要根據自身的情況考慮要不要所有讀完。你至少要知道原型模式(Prototype Pattern),工廠模式(Factory Pattern)和原型繼承(Prototypal Inheritance),其它的不做要求。
繼續升級你的問答應用:
在學完Backbone.js和Node.js後,你會用這兩種最新的JavaScript框架重構問答應用的代碼,使之變成複雜的單頁面現代web應用。你還要把用戶的認證信息和成績保存在MongoDB數據庫上。
祝你學習順利,永不放棄!當你作不下去以爲本身很蠢的時候(你會時不時這麼想的),請記住,世界各地的其餘初學者,甚至是有經驗的程序員,也會不時產生這種想法的。
若是你是徹底的初學者,特別是過了青少年時期的人,開始寫代碼的時候也許很困難。年輕人無所畏懼,也沒有什麼負擔,他們能夠花大量的時間在喜歡的東西上。因此各類挑戰對他們來講也不過是短暫的障礙罷了。
但過了青少年期後你會但願快速的見到成效。由於你沒有這麼多的時間去花上幾個小時就爲了搞清楚一些細節的東西。但這些東西你必須深刻去理解它,不要所以沮喪,堅持完成課程的任務,把bug都找出來,直到你徹底理解。當你到達勝利的彼岸時,你會知道這一切都是值得的,你會發現編程很是有趣並且在上面花的時間都會獲得可觀的回報。
一我的必須去感覺和領悟構建程序帶來的強烈快感。當你一步步的掌握知識點,一點點的將程序搭建起來時,就會對本身產生激勵與確定,帶來十分美妙的知足感。
總有一天你會意識到以前忍受的全部困難都是值得的。由於你將要成爲一名光榮的程序員,你也清楚做爲JavaScript開發者,你的前途一片光明。就像在你以前成千上萬的程序員同樣,你戰勝了最難的bug,你沒有退步,你沒有放手,你沒有找任何藉口讓本身放棄。
當你學有所成的時候,放心的將你的成果分享給咱們吧,哪怕是個微不足道的,小到顯微鏡都看不到的小項目。