ECMAScript 5 (ES5): 第5個(gè)ECMAScript版本矿筝,于2009年標(biāo)準(zhǔn)化眠冈。該標(biāo)準(zhǔn)幾乎所有的瀏覽器都完全支持莹规。
ECMAScript 6 (ES6)/ECMAScript 2015 (ES2015): 第6個(gè)ECMAScript版本,于2015年標(biāo)準(zhǔn)化。目前各大瀏覽器還只是部分支持毡证。
接下來介紹它們主要的區(qū)別:
箭頭函數(shù)和字符串嵌入:
constgreetings=(name)=>{return`hello ${name}`;}
甚至:
constgreetings=name=>`hello ${name}`;
常量聲明(Const): 如同其它編程語(yǔ)言中的常量一樣,但又有不同蔫仙。這里的const代表了constant reference料睛。也就是說,你可以修改其指向的對(duì)象的值摇邦。但是你不能修改其reference的值恤煞。
constNAMES=[];NAMES.push("Jim");console.log(NAMES.length===1);// trueNAMES=["Steve","John"];// error
塊作用域變量:ES6中的新關(guān)鍵字let允許允許開發(fā)者將變量的作用域限定在塊級(jí)別。不會(huì)像var一樣變量提升施籍。
參數(shù)默認(rèn)值:允許在函數(shù)定義的時(shí)候指定默認(rèn)的值阱州。
// Basic syntaxfunctionmultiply(a,b=2){returna*b;}multiply(5);// 10
類定義和繼承
ES6開始支持定義類(使用class關(guān)鍵字),構(gòu)造函數(shù)(使用constructor關(guān)鍵字)法梯,和extend關(guān)鍵字來實(shí)現(xiàn)繼承苔货。
for-of操作
for...of語(yǔ)句用來迭代訪問一個(gè)對(duì)象的所有屬性犀概。
Spread操作符:用于對(duì)象合并
constobj1={a:1,b:2}constobj2={a:2,c:3,d:4}constobj3={...obj1,...obj2}
Promise: Promises提供了一個(gè)處理異步操作的方法。你可以用回調(diào)函數(shù)來實(shí)現(xiàn)夜惭,但是Promise更加簡(jiǎn)潔和可讀姻灶。
constisGreater=(a,b)=>{returnnewPromise((resolve,reject)=>{if(a>b){resolve(true)}else{reject(false)}})}isGreater(1,2).then(result=>{console.log('greater')}).catch(result=>{console.log('smaller')})
模塊的export和import。
constmyModule={x:1,y:()=>{console.log('This is ES5')}}exportdefaultmyModule;
importmyModulefrom'./myModule';