不管是校招仍是社招,若是你恰巧被問及這個問題,那麼請你儘量的多說一點,這樣面試官纔會認爲你是真正的掌握了ES6,ES6的內容不少,這裏只羅列了經常使用的特性及其要點,在面試的時候還須要圍繞這些點根據本身的理解儘量的展開。最後本文只適用於面試回答,不適合用來學習ES6,若是你想更全面的的瞭解ES6,能夠閱讀阮老師的ES6入門es6
1. let和const命令的出現
- let和const區別:const定義一個只讀常量,一旦聲明變量,就必須當即初始化,不能留到之後賦值且不可改變。
- 不存在變量提高,聲明的變量必定要在聲明後使用,不然報錯
- 不容許重複聲明變量,不容許在相同做用域內,重複聲明同一個變量
- 塊級做用域,ES6以前只有函數做用域與全局做用域,一個大括號即一個塊級做用域
- 聲明的變量不在屬於window
2. 解構賦值
- 數組、對象、字符串等解構賦值的基本用法及默認值的設置
- 解構的用途
(1) 交換變量的值
(2) 接收函數返回的多個值
(3) 函數參數默認值的設置 (4) 用於模塊導入的按需加載
3. 字符串的擴展
- 模版字符串
- 方法的增添
includes()
,startsWith()
,endsWith()
.....
- 正則表達式的具名組匹配
4. 數值的擴展
- 完善二進制(0b開頭)與八進制(0o開頭)的表示
- 方法的移植與增長 將
parseInt()
和parseFloat()
從window
對象移植到Number
對象上
- 指數運算符**
5. 函數的擴展
- 函數參數默認值的設置
- 箭頭函數
使用箭頭函數的注意事項:
(1)函數體內的this
對象,就是定義時所在的對象,而不是使用時所在的對象
(2)不能夠看成構造函數,也就是說,不可使用new
命令,不然會拋出一個錯誤
(3)不可使用arguments對象,該對象在函數體內不存在。若是要用,能夠用 rest 參數代替
- rest參數
6. 數組的擴展
- 擴展運算符
用途
(1)複製數組
(2)合併數組
(3)函數的rest參數
- 方法的擴展
Array.from()
、Array.of()
實例上的方法fill()
、flat()
7. 對象的擴展
- 屬性以及方法的簡潔表示
- 屬性名錶達式
- 可遍歷性
for..in
、Object.key(obj)
- super關鍵字的增長
- 新增方法
Object.is()
、Object.assign()
8. Module導入模塊
講到這一點就頗有必要給面試官講一下ES6模塊與CommoonJS模塊的差別面試
- CommonJS 模塊輸出的是一個值的拷貝,ES6 模塊輸出的是值的引用。
- CommonJS 模塊是運行時加載,ES6 模塊是編譯時輸出接口。 若是你不是很清楚能夠閱讀這篇文章
9. 其餘方面
- promise與async的運用和理解,說起這裏他接下來可能會問promise的實現,這也是一道常考題
- Symbol數據類型
- set和map結構
- class
最後但願你面試成功,越努力越幸運,加油正則表達式