點燈坊

失くすものさえない今が強くなるチャンスよ

タグ : ECMAScript

Promise Chain 之 Multiple Catch

雖然實務上 Promise Chain 大都只有一個 catch,但事實上也能同時有多個 catch,可繼續新的 Asynchornous Function,或者將 Error Handling 在不同 catch 分段處理。

ECMAScript 之 Lexical Scope

除了一般語言都有的 Global Scope 與 Local Scope 外, ECMAScript 還有一個很特殊的 Lexical Scope,這導致了 Closure 與日後 Functional Programming 發展。

深入探討 Currying

不只 OOP 有 Design Pattern,事實上 FP 也有不少 Pattern,而 Currying 算 FP 最基礎、使用最多的 Pattern。ECMAScript 雖然沒有直接支援,但因為有 First-class Function 、Lexical Scope,使得 Currying 在 ECMAScript 中使用成為可能。

你不一定需要 Class

ECMAScript 2015 支援 Class 之後,很多人認為總算達到 OOP 該有高度,事實上 ECMAScript 仍有其他方式亦可完成所有 Class 能做事情。

深入探討 Constructor Function

ECMAScript 5 並沒有 Class,雖然仍然可以使用 new 建立 Object,但必須透過 Constructor Function,但究竟 Constructor Function 有什麼黑魔法,竟然可以使用 new 建立 Object 呢 ?

自行實作 Object.create()

Object.create() 從 ECMAScript 5.1 就開始提供,與 new 不同的是 Object.create() 讓我們可直接根據 Prototype 建立 Object,事實上我們也可土炮實作。

ECMAScript 之 Scope Chain

因為 ECMAScript 支援 First-class Function,因此可在 Function 內定義其他 Function,當 Function 內找不到 Variable 時,會先在 Function 內尋找,若找不到則往 Function 外層尋找,最後才會到 Global 尋找,此稱為 Scope Chain。

Closure 與 Scope Chain

ECMAScript 除了 Promise Chain 外,還有所謂的 Scope Chain,當 Inner Function 存取 Variable 時,會依序以 Local Scope、Lexical Scope,最後才是 Global Scope 尋找,此稱為 Scope Chain。

ECMAScript 之 let

ECMAScript 2015 是 ECMAScript 歷史上最重要一次升級,也讓 ECMAScript 終於趕上主流程式語言高度,若要明顯的分辨 ES5 與 ES6,最明顯的方式的方式就是看有沒有使用 let

ECMAScript 之 this

this 在 OOP 相對單純,都是代表固定 Object,但在 ECMAScript 則是嚴肅課題,主要是 ECMAScript 是以 Function 為核心,OOP 是由 Function 實現,因此 this 觀念大異其趣。

ECMAScript 之 OOP 使用 this

ECMAScript 是一個包含多種 Paradigm 的程式語言,當使用 this 時,基本上就是以 OOP 風格開發,以 this 指向 Object。目前 ECMAScript 有 Object Literal、Constructor Function 與 Class 三種方式實現 OOP,將分別討論之。

ECMAScript 之 Hoisting

var 支援 Hoisting, 因此可在執行之後才使用 var 宣告 variable 與 function;但 let 不支援 Hoisting,只能在執行前先宣告好,因為 var 在 JavaScript Engine 的 Creation Phase 已經將 Variable 與 Function 建立完成。

ECMAScript 之 var

var 從 ECMAScript 一開始就存在,也是代表 Keyword,看到 var 就可以判斷是 ECMAScript 了。但 var 在 ECMAScript 2015 之後有了一些改變,重要性也不若以往,TC39 甚至建議完全不要使用 var,改用 letconst

ECMAScript 之 Static Variable

有時候我們希望 Function 執行完後,Variable 仍然有效,此稱為 Static Variable,ECMAScript 並沒有直接支援 Static Variable,但可使用 Function Property 或 Closure 實現。