let var const
- let
- 塊級(jí)作用域
- 不存在變量提升(var變量提升岗喉,值為undefined,let變量必須在聲明后使用)
- 不允許重復(fù)聲明
- var
var會(huì)發(fā)生變量提升炸庞,在聲明前使用钱床,值為undefined
- const
- 聲明一個(gè)只讀的常量,值不能改變
- 通過(guò)const 聲明的對(duì)象的屬性是可以修改的(const實(shí)際上保證的埠居,并不是變量的值不得改動(dòng)查牌,而是變量指向的那個(gè)內(nèi)存地址所保存的數(shù)據(jù)不得改動(dòng)事期。)
箭頭函數(shù) 和 function
- 寫(xiě)法不同
let f = v => v;
let f = function(v){ return v; }
- 箭頭函數(shù)注意點(diǎn):
- 函數(shù)體內(nèi)的
this
對(duì)象,就是定義時(shí)所在的對(duì)象纸颜,而不是使用時(shí)所在的對(duì)象兽泣。(function中的this
,是使用時(shí)所在的對(duì)象)- 不可以當(dāng)作構(gòu)造函數(shù),也就是說(shuō)胁孙,不可以使用new命令唠倦,否則會(huì)拋出一個(gè)錯(cuò)誤。
- 不可以使用
arguments
對(duì)象涮较,該對(duì)象在函數(shù)體內(nèi)不存在稠鼻。如果要用,可以用rest
參數(shù)代替狂票。- 不可以使用
yield
命令候齿,因此箭頭函數(shù)不能用作Generator
函數(shù)。
Promise 對(duì)象
Promise 是異步編程的一種解決方案苫亦,簡(jiǎn)單說(shuō)就是一個(gè)容器毛肋,里面保存著某個(gè)未來(lái)才會(huì)結(jié)束的事件的結(jié)果。從語(yǔ)法上來(lái)說(shuō)屋剑,Promise是一個(gè)對(duì)象润匙,從它可以獲取異步操作的消息。
-
Promise
的三種狀態(tài):
pending
(進(jìn)行中唉匾,也是初始狀態(tài))
fulfilled
(已成功孕讳,resolve)
rejected
(已失敗,reject)
- Promise 中的方法:
Promise.prototype.then()
:為Promise實(shí)例添加狀態(tài)改變時(shí)的回調(diào)函數(shù)巍膘,接收兩個(gè)參數(shù):一個(gè)是fulfilled
狀態(tài)的回調(diào)函數(shù)厂财,第二個(gè)是rejected
狀態(tài)的回調(diào)函數(shù)。then
方法返回一個(gè)新的Promise實(shí)例峡懈,所以可以采用鏈?zhǔn)綄?xiě)法璃饱。
Promise.prototype.catch()
:用于指定發(fā)生錯(cuò)誤時(shí)的回調(diào)函數(shù)。
Promise.prototype.finally()
:不管Promise對(duì)象最后的狀態(tài)如何肪康,都會(huì)執(zhí)行finally()
方法(ES2018引入的標(biāo)準(zhǔn))
Promise.all()
:將多個(gè)Promise實(shí)例包裝成一個(gè)新的Promise實(shí)例荚恶。const p = Promise.all([p1, p2, p3]);
- 只有
p1
、p2
磷支、p3
的狀態(tài)都是fulfilled
谒撼,p
的狀態(tài)才會(huì)變成fulfilled
- 只要
p1
、p2
雾狈、p3
中有一個(gè)rejected
廓潜,p
的狀態(tài)就是rejected
。- 如果希望
p1
、p2
辩蛋、p3
的rejected
不影響p
,那么p1呻畸、
p2、
p3要有自己的
catch`返回一個(gè)新的實(shí)例堪澎。
Promise.race()
:將多個(gè)Promise
實(shí)例包裝成一個(gè)新的Promise
實(shí)例擂错。如果p1、
p2樱蛤、
p3中有一個(gè)實(shí)例率先改變了狀態(tài),
p的狀態(tài)就會(huì)跟著改變剑鞍,最先改變的Promise實(shí)例的返回值昨凡,就傳遞給
p`的回調(diào)函數(shù)。
Promise.allSettled()
:接收一組Promise實(shí)例作為參數(shù)蚁署,包裝成一個(gè)新的Promise實(shí)例便脊。只有所有參數(shù)實(shí)例都返回結(jié)果,不管是fulfilled
還是rejected
光戈,包裝實(shí)例才會(huì)結(jié)束(ES2020引入)哪痰。
Promise.resolve()
:將現(xiàn)有對(duì)象轉(zhuǎn)為Promise對(duì)象。Promise.resolve('foo'); //等價(jià)于 new Promise(resolve => resolve('foo'));
······【未完待續(xù)】······