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=[];