原文連接: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)跟咱們分享你的連接。