es6入門到進(jìn)階

es6=語法+API(方法和函數(shù))
ES與JS的關(guān)系:
JS(瀏覽器端)=ES+DOM+BOM
聲明變量let和常量const
let const var的區(qū)別
var允許重復(fù)聲明 let const不允許
Var允許變量提升 let const不允許
console.log(a) var a = 1(運(yùn)行成功)
console.log(a) let a = 1(運(yùn)行失?。┫嚷暶骱笫褂?/p>


var沒有塊級作用域 let const有

塊級作用域:{},for(){} do{}while() while(){} if(){} switch(){}
塊級作用域 函數(shù)作用域 全局作用域
模板字符串
1 是什么:反引號 ``
2 與一般字符串的區(qū)別:

一般字符串要用+拼接 模板字符串用${}
只要最終可以得出一個(gè)值的都可以寫入${}中
箭頭函數(shù)
是什么(參數(shù))=>{函數(shù)}
箭頭函數(shù)是匿名函數(shù) 需要賦值
const add =(x,y)=>{return x+y};
注意事項(xiàng):單個(gè)參數(shù)可以省略圓括號
單行函數(shù)體可以省略花括號和return不過要同時(shí)省略
const add =(x,y)=>x+y;
單行對象
對象:{鍵值對}

全局作用域 一般函數(shù)作用域
this指向:只有在函數(shù)調(diào)用的時(shí)候this指向才能確定,不調(diào)用的時(shí)候不知道指向誰
沒有具體調(diào)用對象的在非嚴(yán)格模式下是window 嚴(yán)格模式下是undefined
this指向和函數(shù)在哪調(diào)用沒關(guān)系,只和誰在調(diào)用有關(guān)
箭頭函數(shù)的this指向:
箭頭函數(shù)沒有自己的this 通過作用域鏈向外尋找
不適用箭頭函數(shù)的場景:
不能作為構(gòu)造函數(shù) 因?yàn)榧^函數(shù)沒有this
需要this指向調(diào)用對象的時(shí)候
需要使用arguments的時(shí)候(箭頭函數(shù)中沒有arguments)
箭頭函數(shù)的應(yīng)用
解構(gòu)賦值是什么:
數(shù)組的解構(gòu)賦值
原理:
1 模式匹配:對象配對象 數(shù)組配數(shù)組
2 索引值相同的完成賦值
默認(rèn)值:
const [a,b]=[] 等價(jià)于const [a,b]=[undefined,udefined]
const [a=1,b=2]=[] 輸出的結(jié)果是 1 2
默認(rèn)值的生效條件:只有當(dāng)一個(gè)數(shù)組成員嚴(yán)格等于===undefined時(shí) 對應(yīng)的默認(rèn)值才會生效
const [a=1,b=2]=[3,0] 輸出結(jié)果為 3 0
const [a=1,b=2]=[3,null] 輸出結(jié)果為 3 null
const [a=1,b=2]=[3] 輸出結(jié)果為 3 2
默認(rèn)值表達(dá)式:

惰性求值:不用就不執(zhí)行
應(yīng)用:函數(shù)參數(shù)的解構(gòu)賦值
交換變量的值
對象的解構(gòu)賦值:
原理:模式匹配{}={}
屬性名相同的完成賦值

注意事項(xiàng):

可以取到繼承的屬性
應(yīng)用:
其他數(shù)據(jù)類型的解構(gòu)賦值
剩余參數(shù):永遠(yuǎn)是數(shù)組

剩余參數(shù)代替arguments 獲取實(shí)際參數(shù) 在箭頭函數(shù)里面也能使用
剩余參數(shù)只能放在最后面
剩余參數(shù)和展開運(yùn)算符的根本區(qū)別
剩余參數(shù):3,2,1 轉(zhuǎn)換為[3,2,1] 剩余參數(shù)永遠(yuǎn)是數(shù)組

輸出的結(jié)果為[1,2,3]是剩余參數(shù)
展開運(yùn)算符:[3,2,1]轉(zhuǎn)換為3,2,1

輸出的結(jié)果為1,2,3 是展開運(yùn)算符
數(shù)組展開運(yùn)算符的應(yīng)用:
復(fù)制數(shù)組
合并數(shù)組
字符串轉(zhuǎn)為數(shù)組
類數(shù)組轉(zhuǎn)化為數(shù)組
對象展開運(yùn)算符的基本用法:{...{}}
空對象展開沒有任何效果{}

沒有屬性也就為{}

屬性就是其索引值
對象展開運(yùn)算符的應(yīng)用:復(fù)制對象
用戶參數(shù)和默認(rèn)參數(shù)
Set是什么
Set是無序的 沒有重復(fù)值的一系列數(shù)據(jù)
數(shù)組是有序的(通過下標(biāo)尋找對應(yīng)的值) 可以有重復(fù)值的一系列數(shù)據(jù)集合
Set實(shí)例的方法和屬性
使用時(shí)實(shí)例化
const s = new Set()
方法:add() has()是否有 delete()刪除不存在的成員 什么也不會發(fā)生和報(bào)錯(cuò) clear()清除
forEach()遍歷Set用來訪問Set的成員
size()獲取Set的長度

Set構(gòu)造函數(shù)的參數(shù)
數(shù)組:const s = new Set([1,2,1]) 輸出結(jié)果:Set(2) {1,2}
字符串,arguments NodeList,Set(實(shí)例化的Set)相當(dāng)于復(fù)制一個(gè)Set
Set的注意事項(xiàng)
1 判斷重復(fù)的方式
2 什么時(shí)候使用Set
數(shù)組或字符串去重
不需要通過下標(biāo)訪問只需要遍歷時(shí)
為了使用Set提供的方法和屬性時(shí)
Set的應(yīng)用
1 數(shù)組去重
2 字符串去重
存放Dom元素
Map是什么
Map和對象都是鍵值對的集合
Map需要實(shí)例化 添加一個(gè)對象的方法是set()
Map與對象的區(qū)別是:對象的鍵是字符串

Map實(shí)例的方法和屬性
set()添加新成員 鍵存在后添加的會覆蓋
get()獲取指定成員 通過鍵獲取 獲取不存在的成員 結(jié)果為undefined
has()true false
delete()通過鍵刪除
clear()清除

map指的是m 第二個(gè)參數(shù)document用來改變this的指向
size屬性是獲取成員的長度
Map構(gòu)造函數(shù)的參數(shù)
數(shù)組(二維 體現(xiàn)出鍵和值)
Set和Map等
Set需要體現(xiàn)鍵和值
Map用來復(fù)制Map
Map的注意事項(xiàng)
判斷鍵名是否相同的方式:
遵循嚴(yán)格相等=== 相同即會覆蓋
例外是NaN是相等的NaN===NaN

Map的應(yīng)用
操作Dom元素
Babel編譯ES6代碼

對象展開運(yùn)算符的應(yīng)用:復(fù)制對象
用戶參數(shù)和默認(rèn)參數(shù)
Es6的新增方法
padStart 填充頭部 padEnd 填充尾部字符串


數(shù)組的新增方法




Promise:解決過多回調(diào)函數(shù)嵌套問題
是什么:構(gòu)造函數(shù)
1 實(shí)例化構(gòu)造函數(shù)生成實(shí)例對象
Promise狀態(tài):pending(等待)執(zhí)行resolve,變成fulfilled(resolved),已成功 執(zhí)行reject,變成rejected,已失敗
Promise的狀態(tài)一旦變化就不會再改變了,只能是未完成轉(zhuǎn)換為成功或者失敗
resolve()和reject()函數(shù)的參數(shù)
實(shí)例方法
then()
catch()
finally()
構(gòu)造函數(shù)方法
注意事項(xiàng)和應(yīng)用