1.let和const,var的區別?promise
1).var聲明的變量會掛載在window上,而let和const聲明的變量不會。閉包
2).var聲明變量存在變量提高,let和const不存在變量提高。app
3).let和const聲明造成塊做用域。異步
4).同一做用域下let和const不能聲明同名變量,而var能夠函數
5).暫存死區this
6).const(一、一旦聲明必須賦值,不能使用null佔位。二、聲明後不能再修改;三、若是聲明的是複合類型數據,能夠修改其屬性)spa
7).let和const不會建立爲去全局對象的屬性。rest
2.箭頭函數和普通函數的區別對象
1).箭頭函數是匿名函數,不能做爲構造函數,不能使用new隊列
2).箭頭函數不能綁定arguments,取而代之用rest參數...解決,普通函數綁定arguments參數
3).箭頭函數不綁定this,會捕獲其所在的上下文的this值,做爲本身的this值
4).箭頭函數經過 call() 或 apply() 方法調用一個函數時, 只傳入了一個參數,對 this 並無影響
5).箭頭函數沒有原型屬性
6).箭頭函數不能當作Generator函數,不能使用yield關鍵字
7).箭頭函數的this永遠指向其上下文的this,沒有辦改變其指向,普通函數的this指向調用它的對象
3.promise?
1)promise的做用?
主要用於異步計算;
能夠將異步操做隊列化,按照指望的順序執行,返回符合咱們預期的結果;
能夠在對象之間傳遞和操做promise,幫助咱們處理隊列;
2)爲何會出現promise?
爲了不界面凍結(任務)
異步操做的常見語法
異步回調的問題:(1.以前處理異步是經過純粹的回調函數的形式進行處理
2.很容易進入到回調地獄中,剝奪了函數return的能力
3.問題能夠解決,可是難以讀懂,維護困難
4.稍有不慎就會踏入回調地獄 - 嵌套層次深,很差維護)
3)promise的優點?
1.promise是一個對象,對象和函數的區別就是對象能夠保存狀態,函數不能夠(閉包除外)
2.並未剝奪函數return的能力,所以無需層層傳遞callback,進行回調獲取數據
3.代碼風格,容易理解,便於維護
4.多個異步等待合併便於解決
4).promise詳解
(
)
一、接收兩個函數做爲參數,分別表明fulfilled(成功)和rejected(失敗)
二、.then()返回一個新的Promise實例,因此它能夠鏈式調用
三、當前面的Promise狀態改變時,.then()根據其最終狀態,選擇特定的狀態響應函數執行
四、狀態響應函數能夠返回新的promise,或其餘值,不返回值也能夠咱們能夠認爲它返回了一個null;
五、若是返回新的promise,那麼下一級.then()會在新的promise狀態改變以後執行
六、若是返回其餘任何值,則會當即執行下一級.then()
6).then()裏面有.then()的狀況
(
一、由於.then()返回的仍是Promise實例
二、會等裏面的then()執行完,再執行外面的
)
4.