在 freeCodeCamp 自學 JavaScript

by 好豪
Published: Last Updated on

freeCodeCamp 是一個開源且免費的網路課程,習題式的練習搭配簡短的語法介紹、讓你從一開始用自己動手做來自學寫程式。課程主題以網頁設計為主,網頁前端與後端都有,每個系列課程(Certification)會有一個小主題,一系列的 project 作業完成後會頒發證書,可以讓程式設計自學者把證書加入自己的履歷或者 Linkedin。

為了滿足自己對 JavaScript 的好奇心,我這個月完成了 JavaScript Algorithms and Data Structures Certification 這系列課程。這篇文章我將分享我的課程心得。

freeCodeCamp JavaScript 課程結業證書
我的 freeCodeCamp 課程結業證書

這個課程適合哪些人?

初學程式語言與網頁前端的人

課程會從最基礎的變數、函式、運算元等內容介紹起,不需要任何程式設計背景就能開始學。尤其如果你是對網頁前端有興趣的自學者,JavaScript 是必學的程式語言。

課程頁面語法介紹與習題並排,原則上只要好好看懂說明、就能解題,完全適合自學。寫習題卡關的時候,freeCodeCamp 的習題頁面就有 “Get Help” 可以連結到提示,真的想破頭的話,還有附上解答。

這個課程特別的是包含了 Debbugging 的章節,提點幾個新手容易寫錯的地方,例如資料型別搞錯、括號不齊全等等,讓你可以在初學階段,就在腦袋建立一個簡單的除錯清單、提醒自己不要落入這些 bug。

如果你是這類初學者,建議你在練習的過程寫一些簡短的筆記、或者搭配一些線上課程(例如:Udemy)輔助。這門課涉及內容都相當實用,但是我認為對初學者而言太過廣泛,照順序練習的話,可能到後半段就把前面的內容忘光光了。

寫過程式、想開始探索的 JavaScript 的人

我就是這類單純對 JS 好奇的人。我的程式知識背景包括大學修過基本程式設計與資料結構、也用 Python3 刷過 Leetcode 約 50 題。實際課程花費時間大約兩週,每天約一個小時,加上一個週末集中六小時寫習題,並不會真的到網站上所述的需要 300 小時。

對於有點程式基礎的人,課程包含一個 ES6 章節,在這裡可以認識到 JS 特別的語法,包括 Arrow FunctionPromise 等等。不過,我認為對於有心想好好認識 ES6 的人,這個章節或許值得在課程完全結束之後再練習第二遍、強化記憶,因為後半段的課程習題,不用 ES6 的語法也能解出來。全課程完成後再回來複習 ES6 章節,值得再想想:後面的習題是否用 ES6 語法能更簡潔?

不過,我個人認為 Object Oriented Programming 是在這門課學習過程小小的困難點。關於 JS 的物件導向,這門課分別在 ES6 跟 OOP 兩個章節都有著墨,麻煩的是課程在兩邊的語法不太一樣,學到後面我都有點搞混。

  • 在 OOP 章節,類別是 prototype-based 的寫法
  • 在 ES6 章節,則是介紹了用 class 語法來寫類別

參考筆記:

單純想學 Regular Expression 的資料科學家

Regular Expression 的中文是正則表示式,是使用單個字串來描述、匹配一系列符合某個句法規則的字串(wiki)。

資料科學家而言,正則表示式是資料清理階段處理字串時不可或缺的武器:

  • 你可以用正則表示式來檢驗字串是否符合特定規則
    • 例如檢查資料是否是正確身分證字號格式
  • 或者從字串中依照特定規則抽取資料
    • 例如從完整 Email 字串中只抽取出 “@” 之前使用者帳號的部分

如果你是 Data Scientist、並沒有特別想鑽研網頁前端或 JS,Regular Expression 這個章節是可以獨立完成的、不需要有太多 JS 語法的知識背景。

參考筆記:正規表示式 30 分鐘入門教程(簡體中文)



這門課不適合哪種人

如果你看了 Certification 的標題,想學資料結構與演算法…

這門課不適合!課程內容不會提到 tree 或 heap 這些資料結構,也不會探討 Big O Notation、sort 或 dynamic programming 這些演算法議題。這部分應該是 freeCodeCamp 有一點點標題詐騙了(?)。

如果你需要學習 JavaScript 的資料結構與演算法、或者準備軟體工程師面試題,可以參考好豪的另一篇課程心得:JavaScript Algorithms and Data Structures Masterclass – Udemy 課程心得

結語

這門課我覺得很適合當作 JS 與網頁前端的敲門磚,內容廣泛、且有很多習題讓你親手做來熟悉語法。重點是佛心的完全免費,除了偶爾提示要你捐錢支持以外,沒有其他麻煩的廣告。

只要對 JS 或網頁前端有興趣的話,不用猶豫,加入 freeCodeCamp馬上動手開始這門課就對了。

不過,我個人還是喜歡有影片講解、以及容易複習的投影片資料,所以我在做這份 JS 練習時,同時也在 Udemy 上修習 Colt Steele 講師開的 JavaScript 課程。對我而言,先看完課程影片,再把 freecodecamp 的這些教材當作習題,學習的效果更好。

推薦閱讀