一:聲明屬性let const
var let const 區(qū)別
1.var聲明變量會發(fā)生變量提升姑子,let霜威、const不會發(fā)生變量提升2.var允許重復聲明變量,let不可以3.const聲明變量不可以被改變
二:字符串模板
用反引號創(chuàng)建字符串棒拂,其中可用${'變量'}
console.log(`your name is${name}`);
三:解構賦值對數(shù)組和對象的優(yōu)化
四:箭頭函數(shù)
與普通函數(shù)的區(qū)別
1莱坎、書寫上用=>代替了function
2、普通函數(shù)的this指向window 而ES6箭頭函數(shù)里面的this指向定義時的那個對象 而不是運行時的那個對象
//普通函數(shù)vartest =function(x){returnx+2;}使用箭頭函數(shù):vartest =x=>x+2;
五:新增了class
ES6中添加了對類的支持肺素,引入了class關鍵字
以前編寫一個構造函數(shù)(類)functionPad(color){this.color = color;}現(xiàn)在的寫法跟Java更接近了classIphone{constructor(color, size){this.color = color;this.size = size;}playgame(){//.............}toString(){return`這臺手機的顏色是${this.color}屏幕大小是${this.size}`;}}我們定義了一個類恨锚,名字叫Iphone通過類生成一個實例:variphone =newIphone("白色",5);其中constructor被稱之為構造方法,在我們new 一個對象的時候倍靡,自動被調用不過本質上猴伶,JS依然使用了原型來實現(xiàn),也就是說,這不過是一個新的寫法而已 跟以前的構造函數(shù)沒有區(qū)別他挎。要注意的是筝尾,使用了class來定義類,必須先定義再使用
六:ES6中的set方法
一般用于數(shù)組去重
vararr = [1,2,3,3,4,5];varnewarr =newArray.from(set arr)console.log(newarr)//[1,2,3,4,5]
七:promise用來解決異步問題
1办桨、什么是promise?
異步操作的同步代碼
2筹淫、promise的基本使用
通過new promise創(chuàng)建一個promise對象,里面有一個參數(shù)呢撞,參數(shù)是一個回調函數(shù)损姜,回調函數(shù)中有2個參數(shù),resolve殊霞,reject resolve()當
異步執(zhí)行成功的時候調用的方法摧阅,reject()當異步失敗的時候調用的方法。
除此之外promise有一個then方法绷蹲,當成功的時候執(zhí)行第一個回調函數(shù)棒卷,當失敗的時候執(zhí)行第二個回調函數(shù)。第二個回調函數(shù)也可以通過
promise對象.catch調用
3祝钢、Promise.all():當所有的異步代碼都執(zhí)行完畢以后才會執(zhí)行.then中的操作
4比规、Promise.race():只要有一個promise執(zhí)行完畢后就會執(zhí)行.then操作
如何實現(xiàn)多個異步同步執(zhí)行varp1 =newPromise(function(resolve,reject){ setTimeout(function(){console.log('1'); resolve() },3000) })functionp2(){returnnewPromise(function(resolve,reject){ setTimeout(function(){console.log("2"); resolve(); },2000) }) }functionp3(){returnnewPromise(function(resolve,reject){ setTimeout(function(){console.log("3"); resolve(); },1000) }) }functionp4(){returnnewPromise(function(resolve,reject){ setTimeout(function(){console.log("4"); resolve(); },500) }) } p1.then(function(){returnp2() }) .then(function(){returnp3(); }) .then(function(){returnp4(); })
八:ES6新增的Set、Map方法
set:set是ES6提供的一種新的數(shù)據(jù)結構拦英,類似于數(shù)組蜒什,但是成員的值是唯一的沒有重復的,接受的參數(shù)是一個數(shù)組方法有:add():添加delete():刪除size:長度 has():查找clear:清除所有map:map類似于對象疤估,也是鍵值對的集合吃谣, 但是“鍵”的范圍不限于字符串,各種類型的值(包括對象)都可以當作鍵方法有:set():設置get():獲取delete():刪除 has():查找clear():清除所有
九:for ...of...
for of 和for in區(qū)別
for? in可以用來遍歷數(shù)組做裙,但是會有以下幾個問題1.index索引為字符串型數(shù)字,不能直接進行幾何運算2.遍歷順序有可能不是按照實際數(shù)組的內部順序3.使用forin會遍歷數(shù)組所有的可枚舉屬性肃晚,例如下面例子上的原型方法method和name屬性都會被遍歷出來
Array.prototype.method? =function(){console.log(this.length)}varmyArray = [1,2,3,4,5]myArray.name ="數(shù)組"for(varkeyinmyArray) {console.log(key)? ? ? ? }
輸出結果:
如果我們不想要method和name呢锚贱,這樣的話我們可以使用ES6的for of
十:symbol函數(shù)
Symbol函數(shù)會生成一個唯一的值
可以理解為Symbol類型跟字符串是接近的
但每次生成唯一的值,也就是每次都不相等关串,至于它等于多少拧廊,并不重要
分類:?ES6