前端知識 | 簡析ES6
CMAScript 6.0(以下簡稱 ES6)是 JavaScript 語言的下一代標準,已經在 2015 年 6 月正式發布了。它的目標,是使得 JavaScript 語言可以用來編寫復雜的大型應用程序,成為企業級開發語言。
剛開始使用 vue 或者 react,很多時候我們都會把 ES6 這個大兄弟加入我們的技術棧中。以下是我們在日常開發中比較常用的特性。
1.變量聲明 const 和 let
我們都是知道在 ES6 以前,var 關鍵字聲明變量。無論聲明在何處,都會被視為聲明在函數的最頂部(不在函數內即在全局作用域的最頂部)。這就是變量提升例如:
以上的代碼實際上是:
所以無論如何 test 都會被創建聲明
但是在 ES6 中新增了 let 和 const 命令。let 表示變量、const 表示常量。let 和 const 都是在它們所在的塊級作用域中有效。看以下代碼:
const 聲明的常量不能被修改
let 的作用域是在它所在當前代碼塊,不會存在變量提升。for 循環的計數器,就很合適使用 let 命令。列入以下代碼
2.函數
函數默認參數
在 ES5 我們給函數定義參數默認值:
但當 num 傳入為0的時候就是 false,此時 num = 200 與我們的實際要的效果明顯不一樣。
ES6 為參數提供了默認值。在定義函數時便初始化了這個參數,以便在參數沒有被傳遞進去時使用。
箭頭函數
ES6 很有意思的一部分就是函數的快捷寫法。也就是箭頭函數。
箭頭函數最直觀的三個特點:
· 不需要 function 關鍵字來創建函數
· 省略 return 關鍵字
· 繼承當前上下文的 this 關鍵字
3.更方便的數據訪問--解構
數組和對象是 JS 中最常用也是最重要表示形式。為了簡化提取信息,ES6 新增了解構,這是將一個數據結構分解為更小的部分的過程。
ES5 中我們提取對象中的信息形式如下:
ES6 中我們從對象或者數組裏取出數據存為變量,例如
4.Spread Operator 展開運算符
ES6 中的另外一個特性就是 Spread Operator 三個點兒...
組裝對象或者數組
想獲取數組或者對象除了前幾項或者除了某幾項的其他項
對於 Object 而言,還可以用於組合成新的 Object。(ES2017 stage-2 proposal) 當然如果有重復的屬性名,右邊覆蓋左邊
5.import 和 export
import 導入模塊、export 導出模塊
導入與導出的一些細節:
1.當用 export defaultpeople 導出時,就用 import people 導入(不帶大括號)
2.一個文件裏,有且只能有一個 exportdefault。但可以有多個 export。
3.當用 export name 時,就用 import { name } 導入(記得帶上大括號)
4.當一個文件裏,既有一個 exportdefault people, 又有多個 export name 或者 export age 時,導入就用 import people, { name, age}
5.當一個文件裏出現 n 多個 export 導出很多模塊,導入時除了一個一個導入,也可以用 import * asexample
6.Promise
Promise 是異步編程的一種解決方案,比傳統的解決方案——回調函數和事件——更合理和更強大。它由社區最早提出和實現,ES6 將其寫進了語言標準,統一了用法,原生提供了 Promise 對象。
所謂 Promise,簡單說就是一個容器,裏面保存著某個未來才會結束的事件(通常是一個異步操作)的結果。從語法上說,Promise 是一個對象,從它可以獲取異步操作的消息。Promise 提供統一的 API,各種異步操作都可以用同樣的方法進行處理。
基本用法:
Promise 構造函數接受一個函數作為參數,該函數的兩個參數分別是 resolve 和 reject。它們是兩個函數,由 JavaScript 引擎提供,不用自己部署。
resolve 函數的作用是,將 Promise 對象的狀態從“未完成”變為“成功”(即從 pending 變為 resolved),在異步操作成功時調用,並將異步操作的結果,作為參數傳遞出去;reject 函數的作用是,將 Promise 對象的狀態從“未完成”變為“失敗”(即從 pending 變為 rejected),在異步操作失敗時調用,並將異步操作報出的錯誤,作為參數傳遞出去。
以上整理的是比較常見的 es6 特性,更多 es6 的內容大家可以進入到官方文檔中學習。
【海說軟件接受各種技術咨詢及開發業務】
-END-
前端知識 | 簡析ES6