iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 1
3

你所不知道的 JS

這次鐵人賽的主題是「你懂 JavaScript 嗎?」,主要內容是「You Don't Know JS」系列書的讀書筆記。

為什麼要讀這一系列的書呢?

由於近幾年的年度願望中都有「讀完 You Don't Know JS 系列書」這一項(掩面),但苦於各種理由而導致進度嚴重落後(哭),那麼就讓我藉由這次鐵人賽一口氣讀完吧(握拳)!

在這裡引用書中的幾句話,勉勵我也勉勵各位讀者

不要停在「可以運作就好,但並非真正知道為何可行」的態度。踏向那崎嶇的「少有人走的路」,擁抱 JavaScript 的原貌,以及它能做到的事。只要擁有這種知識,就沒有無法理解的技巧、框架或是本週熱門流行詞的首字母縮寫。

所謂的「專業人員」,往往都是指能夠「製作產品」,像是解決問題、修 bug 等,而非理解和探究手上的工具。因此,這一系列的書將帶我們了解這個語言的運作細節,再將這些細節融入我們的思考方式和實際工作流程中。

一起來和我努力 30 天吧!

加油

目錄

導讀(Up & Going)

暖身 (๑•̀ㅂ•́)و✧

這部份的內容有...

型別與文法(Types & Grammar)

Do You Know What I Mean?

圖片來源:Do You Know What I Mean?

這部份會提到令人困惑的隱含式的強制轉型,在此會解答其運作方式和如何好好使用它。

這部份的內容有...

範疇與閉包(Scope & Closures)

JavaScript 引擎會在執行程式前先做編譯,在編譯階段會處理變數和函式的宣告,因此也會帶出拉升、範疇等議題,最後會提到何謂閉包與其應用-模組。

這部份的內容有...

  • 什麼是範疇(Scope)?
  • 語彙範疇(Lexical Scope)
  • 函式 vs 區塊範疇(Function vs. Block Scope)
  • 拉升(Hoisting)
  • 閉包(Closure)
  • 動態範疇(Dynamic Scope)
  • Polyfilling 區塊範疇(Polyfilling Block Scope)
  • 語彙的 this(Lexical-this)

this 與物件原型(this & Object Prototypes)

what is this?

圖片來源:What is this meaning of this?

這部份會提到幾個概念:(1) this 是函式執行時所屬的物件,而 this 是在執行時期做繫結,其值和函式在哪裡被呼叫有關,在這裡會歸納如何辨識 this 的值的四個規則;(2) 物件原型是屬性的查找串鏈,類似語彙範疇查找變數的方式;(3) 行為委派,這是物件原型最常應用的地方。

這部份的內容有...

  • this
  • 物件(Object)
  • 混合的「類別」物件(Mixing (Up) "Class" Objects)
  • 原型(Prototypes)
  • 行為委派(Behavior Delegation)
  • ES6 類別(ES6 class)

非同步處理與效能(Async & Performance)

這部份主要是為了開發者能產出合理且高效能的程式碼,因此會提到非同步處理的機制和模式,讓程式碼能更好撰寫、更好維護、更好推理和有更佳的效能,例如:callback、promise、generator。最後會談到如何使用 web worker 達到程式的平行處理、SIMD 達到資料的平行處理,與如何做效能最佳化,讓我們的程式不僅僅是能運作而已,而且是能夠運作得很好。

這部份的內容有...

  • 非同步:現在和以後(Asynchrony: Now & Later)
  • Callbacks
  • Promises
  • Generators
  • 程式效能(Program Performance)
  • 基準化分析與微調(Benchmarking & Tuning)
  • asynquence 程式庫(Library: asynquence)
  • 進階的非同步模式(Advanced Async Patterns)

ES6 與未來發展(ES6 & Beyond)

ES6

關注 ES6、ES7 甚至後續版本,不斷前進!

這部份的內容有...

  • ES? 現在與未來(ES? Now & Future)
  • 語法(Syntax)
  • 組織功能(Organization)
  • 非同步流程控制(Async Flow Control)
  • 群集(Collections)
  • API 新增功能(API Additions)
  • Meta Programming(Meta Programming)
  • 超越 ES6(Beyond ES6)

總結

  • 總結

鐵人團隊介紹

大家好,我們是「武裝狗狗」!

武裝狗狗

p.s. 為何會取這個名字團員們也很困惑,可能是因為剛好用了某個「產生器」隨意轉了個覺得還可以的名字就報隊了吧!

成員如下(按字母順序排列)

歡迎大家閱讀我們的學習歷程,也請不吝指教!


同步發表於部落格


下一篇
你懂 JavaScript 嗎?#2 暖身 (๑•̀ㅂ•́)و✧ Part 1 - 運算子、運算式、值與型別、變數、條件式、迴圈
系列文
你懂 JavaScript 嗎?8

尚未有邦友留言

立即登入留言