CMAScript 6 簡介:
CMAScript 6.0(以下簡稱 ES6)是 JavaScript 語言的下一代標(biāo)準(zhǔn),已經(jīng)在 2015 年 6 月正式發(fā)布了肯适。它的目標(biāo)阐虚,是使得 JavaScript 語言可以用來編寫復(fù)雜的大型應(yīng)用程序烟勋,成為企業(yè)級開發(fā)語言。
剛開始使用 vue 或者 react拂盯,很多時候我們都會把 ES6 這個大兄弟加入我們的技術(shù)棧中佑女。以下是我們在日常開發(fā)中比較常用的特性。
1.變量聲明 const 和 let
我們都是知道在 ES6 以前谈竿,var 關(guān)鍵字聲明變量团驱。無論聲明在何處,都會被視為聲明在函數(shù)的最頂部(不在函數(shù)內(nèi)即在全局作用域的最頂部)空凸。這就是變量提升例如:
以上的代碼實際上是:
所以無論如何 test 都會被創(chuàng)建聲明
但是在 ES6 中新增了 let 和 const 命令嚎花。let 表示變量、const 表示常量呀洲。let?和 const 都是在它們所在的塊級作用域中有效紊选√渲梗看以下代碼:
const 聲明的常量不能被修改
let 的作用域是在它所在當(dāng)前代碼塊,不會存在變量提升兵罢。for?循環(huán)的計數(shù)器献烦,就很合適使用?let?命令。列入以下代碼
2.函數(shù)
函數(shù)默認(rèn)參數(shù)
在 ES5 我們給函數(shù)定義參數(shù)默認(rèn)值:
但當(dāng) num 傳入為0的時候就是 false卖词,此時 num = 200 與我們的實際要的效果明顯不一樣巩那。
ES6 為參數(shù)提供了默認(rèn)值。在定義函數(shù)時便初始化了這個參數(shù)坏平,以便在參數(shù)沒有被傳遞進(jìn)去時使用拢操。
箭頭函數(shù)
ES6 很有意思的一部分就是函數(shù)的快捷寫法锦亦。也就是箭頭函數(shù)舶替。
箭頭函數(shù)最直觀的三個特點:
·????????不需要 function 關(guān)鍵字來創(chuàng)建函數(shù)
·????????省略 return 關(guān)鍵字
·????????繼承當(dāng)前上下文的 this 關(guān)鍵字
3.更方便的數(shù)據(jù)訪問--解構(gòu)
數(shù)組和對象是 JS 中最常用也是最重要表示形式。為了簡化提取信息杠园,ES6 新增了解構(gòu)顾瞪,這是將一個數(shù)據(jù)結(jié)構(gòu)分解為更小的部分的過程。
ES5 中我們提取對象中的信息形式如下:
ES6 中我們從對象或者數(shù)組里取出數(shù)據(jù)存為變量抛蚁,例如
4.Spread Operator 展開運算符
ES6 中的另外一個特性就是 Spread Operator 三個點兒...
組裝對象或者數(shù)組
想獲取數(shù)組或者對象除了前幾項或者除了某幾項的其他項
對于 Object 而言陈醒,還可以用于組合成新的 Object。(ES2017 stage-2 proposal) 當(dāng)然如果有重復(fù)的屬性名瞧甩,右邊覆蓋左邊
5.import 和 export
import 導(dǎo)入模塊钉跷、export 導(dǎo)出模塊
導(dǎo)入與導(dǎo)出的一些細(xì)節(jié):
1.當(dāng)用 export defaultpeople 導(dǎo)出時,就用 import people 導(dǎo)入(不帶大括號)
2.一個文件里肚逸,有且只能有一個 exportdefault爷辙。但可以有多個 export朦促。
3.當(dāng)用 export name 時膝晾,就用 import { name } 導(dǎo)入(記得帶上大括號)
4.當(dāng)一個文件里,既有一個 exportdefault people, 又有多個 export name 或者 export age 時务冕,導(dǎo)入就用 import people, { name, age}
5.當(dāng)一個文件里出現(xiàn) n 多個 export 導(dǎo)出很多模塊血当,導(dǎo)入時除了一個一個導(dǎo)入,也可以用 import * asexample
6.Promise
Promise 是異步編程的一種解決方案禀忆,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強大臊旭。它由社區(qū)最早提出和實現(xiàn),ES6 將其寫進(jìn)了語言標(biāo)準(zhǔn)箩退,統(tǒng)一了用法离熏,原生提供了?Promise?對象。
所謂?Promise乏德,簡單說就是一個容器撤奸,里面保存著某個未來才會結(jié)束的事件(通常是一個異步操作)的結(jié)果吠昭。從語法上說,Promise 是一個對象胧瓜,從它可以獲取異步操作的消息矢棚。Promise 提供統(tǒng)一的 API,各種異步操作都可以用同樣的方法進(jìn)行處理府喳。
基本用法:
Promise?構(gòu)造函數(shù)接受一個函數(shù)作為參數(shù)蒲肋,該函數(shù)的兩個參數(shù)分別是?resolve?和?reject。它們是兩個函數(shù)钝满,由 JavaScript 引擎提供兜粘,不用自己部署。
resolve?函數(shù)的作用是弯蚜,將?Promise?對象的狀態(tài)從“未完成”變?yōu)椤俺晒Α保磸?pending 變?yōu)?resolved)孔轴,在異步操作成功時調(diào)用,并將異步操作的結(jié)果碎捺,作為參數(shù)傳遞出去路鹰;reject?函數(shù)的作用是,將?Promise?對象的狀態(tài)從“未完成”變?yōu)椤笆 保磸?pending 變?yōu)?rejected)收厨,在異步操作失敗時調(diào)用晋柱,并將異步操作報出的錯誤,作為參數(shù)傳遞出去诵叁。
以上整理的是比較常見的 es6 特性雁竞,更多 es6 的內(nèi)容大家可以進(jìn)入到官方文檔中學(xué)習(xí)。
【海說軟件接受各種技術(shù)咨詢及開發(fā)業(yè)務(wù)】
-END-?