本篇為 [JS102] 升級你的 JavaScript 技能:ES6 + npm + Jest 這門課程的學習筆記。如有錯誤歡迎指正!
學習目標:
理解常用內建函式如何使用
熟悉程式語法並知道如何解決基礎問題
What is ECMAScript?
是一種標準和規範,Javascript 這門語言就是遵循 ECMAScript 規範實作。於 2015 年發布 ECMAScript 第六版,因此又稱 ES2015 或 ES6,在 ES6 之前的版本就稱作 ES5。
目前大部分的瀏覽器均支援 ES6,但仍有少數舊型不支援。因此我們可以透過 Babel 轉譯器,將 ES6 代碼轉換為 ES5 代碼,如此就不須擔心支援問題。
ES6 新語法
宣告變數 let 與 const
- ES5:使用 var
- ES6:使用 let 與 const
兩者最大差異在於:
- 重複宣告:const 用於宣告常數,不會被重新賦值
- 作用域不同:
- var:作用於整個函數範圍中(function scope)
- let 與 const:均為區塊作用域(block scope),如此可避免污染到大括號外的變數
Template Literals 模板字串符
Template 的意思是樣板。Template Literals 可用於字串拼接。
ES5
- 使用單引號(
''
)或雙引號(""
) - 缺點:必須用
+
或,
來串接字串,且無法換行
ES6
- 使用反引號(``)
- 優點:可用於多行字串拼接,也可在反引號中放入
${變數}
Destructuring 解構賦值
- 可以把陣列或物件的資料解開,並擷取成獨立的變數
Spread Operator 展開運算子
- 使用
...
運算子,展開陣列或物件
Rest Parameters 其餘參數
- 使用 … 運算子,集合剩餘的元素變成陣列,就可以在不確定陣列長度的情況下,傳入參數。
Default Parameters 設定參數預設值
- 可以幫參數加入預設值
箭頭函式
- Arrow Function,縮寫為 function
- 優點:簡化程式碼,幫助閱讀
Import & Export 引入與輸出
- 引入與輸出 module,類似
require
與module.exports
的用法
Babel 簡介
- 是一種 JavaScript 轉譯器,可將 ES6 新語法轉換為 ES5 舊語法
- 安裝指令:
npm install babel-loader @babel/core @babel/preset-env --save-dev
參考資料:
- 從博物館寄物櫃理解變數儲存模型
- [第五週] JavaScript — ES6 與 Babel