1. 程式人生 > 其它 >ES6(2015)新特性:類、模組化、箭頭、函式引數預設值、模板字串

ES6(2015)新特性:類、模組化、箭頭、函式引數預設值、模板字串

1. 類(class)

ES6引入了Class(類)這個概念,作為物件的模板,通過class關鍵字,可以定義類。基本上,ES6的class可以看作只是一個語法糖,它的絕大部分功能,ES5都可以做到,新的class寫法只是讓物件原型的寫法更加清晰、更像面向物件程式設計的語法而已。上面的程式碼用ES6的“類”改寫,就是下面這樣。

classMan{
constructor(name){
this.name='fly63前端';
}
console(){
console.log(this.name);
}
}
constman=newMan('fly63前端');
man.console();//fly63前端

2. 模組化(ES Module)

ES6模組在編譯時就能確定模組的依賴關係,以及輸入和輸出的變數。這種載入稱為“編譯時載入”或者靜態載入,效率更高,使靜態分析成為可能,比如引入巨集和型別檢驗功能。這也導致了沒法引用ES6模組本身,因為它不是物件。
ES6模組自動採用嚴格模式。尤其需要注意this的限制,頂層的this指向undefined。
ES6模組通過export命令規定模組的對外介面,通過import命令輸入其它模組提供的功能。

//模組A匯出一個方法
exportconstsub=(a,b)=>a+b;
//模組B匯入使用
import{sub}from'./A';
console.log(sub(1,2));//3

http://www.xihuanfan.com

手機遊戲下載

3. 箭頭(Arrow)函式

ES6可以使用“箭頭”(=>)定義函式,注意是函式,不要使用這種方式定義類(構造器)。

constfunc=(a,b)=>a+b;
func(1,2);//3

4. 函式引數預設值

在ES6如果函式引數沒有值或未定義的,預設函式引數允許將初始值初始化為預設值。

functionfoo(age=25,){//...}

5. 模板字串

模板字面量是允許嵌入表示式的字串字面量。你可以使用多行字串和字串插值功能。它們在ES2015規範的先前版本中被稱為“模板字串”。

constname='fly63前端';
conststr=`Yournameis${name}`;

6. 解構賦值

解構賦值是對賦值運算子的擴充套件。

他是一種針對陣列或者物件進行模式匹配,然後對其中的變數進行賦值。

在程式碼書寫上簡潔且易讀,語義更加清晰明瞭;也方便了複雜物件中資料欄位獲取。

leta=1,b=2;
[a,b]=[b,a];//a2b1

7. 延展操作符

延展操作符 = ...可以在函式呼叫/陣列構造時,將陣列表示式或者string在語法層面展開,還可以在構造物件時,將物件表示式按key-value的方式展開。

leta=[...'helloworld'];//["h","e","l","l","o","","w","o","r","l","d"]

8. 物件屬性簡寫

在ES6中允許我們在設定一個物件的屬性的時候不指定屬性名。物件中直接寫變數,非常簡潔。

constname='fly63前端',
constobj={name};

9. Promise

Promise 是非同步程式設計的一種解決方案,其實是一個建構函式,自己身上有all、reject、resolve這幾個方法,原型上有then、catch等方法。

Promise.resolve().then(()=>{console.log(2);});
console.log(1);
//先列印1,再列印2

10. let和const

ES2015(ES6) 新增加了兩個重要的JavaScript關鍵字: let 和 const。 let 宣告的變數只在 let 命令所在的程式碼塊內有效。

const 宣告一個只讀的常量,一旦宣告,常量的值就不能改變。

letname='fly63';
constarr=[];