0%

[week 3] JavaScript:ES6 語法

本篇為 [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

兩者最大差異在於:

  1. 重複宣告:const 用於宣告常數,不會被重新賦值
  2. 作用域不同:
    • 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,類似 requiremodule.exports 的用法

Babel 簡介

  • 是一種 JavaScript 轉譯器,可將 ES6 新語法轉換為 ES5 舊語法
  • 安裝指令:npm install babel-loader @babel/core @babel/preset-env --save-dev

參考資料:

  1. 從博物館寄物櫃理解變數儲存模型
  2. [第五週] JavaScript — ES6 與 Babel