應對前端面試之ES6新特性


es6的九大新特性

一、let和const

 let

1.1 let是塊級作用域,聲明的變量只在代碼塊中有效。

 

 

 

1.2let不存在變量提升

 var存在變量提升,即在聲明之前使用,值為undefined

 

 

 其執行順序為

 

 

 經典面試題:

 

 

 

1.3 let不允許重復聲明

  不允許在相同的作用域下,重復聲明同一變量

 

 

 

const

2.1  聲明一個只讀變量,一但聲明值不會再改變。

 

 

 

2.2  聲明變量必須初始化。

 

 

 

2.3  const也是只在塊級級作用域內有效。

2.4  const命令聲明的常量也是不提升。

 const本質:const命令聲明的變量的值並不是不得改動的,而是變量執行那個的那個內存地址所保存的數據不得改動 對於數值、字符串數、boolean這種類型的數據的值就保存在變量指向的那個內存地址,因此是常量。

 

ES6聲明變量的六種方法:

 ES5只有兩種聲明變量的方法 var命令和function命令;ES6添加了let命令和const命令,還有import命令和class命令。(import和class  如若有時間后面會進行講解)

 

二、模板字符串

  模板字符串主要用於方便將字符串和變量連接起來,用反引號`   `,${} 

  反引號中放字符串和${],${}括號內寫入需要的引用的變量。

 

 

 

 

三、箭頭函數

1.1不需要寫function關鍵字

 

 

 

1.2在箭頭函數中this指的是上下文this指向的對象。

 

 

 

1.3當參數只有一個,{}中的代碼只有一行時,可以省略()和{},若果有return也可省略。

 

 

 

四、數組,對象解構

可以將對象中的屬性,數組值進行結構。以便快速獲取數組和對象的值。

 

 

 

 

五、函數設置默認參數值

 

 

六、迭代器iterator,for...of ,for...in

 

Iterator是ES6中一種新的遍歷機制;

1. 遍歷器(Iterator)它 是一種接口,為各種不同的數據結構提供統一的訪問機制。

2. Iterator 的作用有三個:

一是為各種數據結構,提供一個統一的、簡便的訪問接口

二是使得數據結構的成員能夠按某種次序排列;

三是 ES6 創造了一種新的遍歷命令for...of循環,Iterator 接口主要供for...of消費。

 

3. Iterator遍歷的過程:

  (1)  創建一個指針對象,指向當前數據結構的起始位置,Iterator的本質就是一個指針對象;

(2)當第一次調用指針對象的next()方法時,指針指向數據結構的第一個元素;

(3)當第二次調用指針對象的next()方法時,指針指向數據結構的第二個元素;

(4)不斷地調用指針對象的next()方法,直到它指向當前數據結構的結束位置;

 每一次調用next()方法時,會返回兩個屬性的對象,一個時valuedonevalue屬性表示當前數據里元素的值,done返回一個boolean值,表示是否遍歷完成。

以下舉一個簡單的例子:

 

 

 

4. Iterator可以遍歷的數據類型:

  • Array
  • Map
  • Set
  • String
  • TypedArray
  • 函數的 arguments 對象
  • NodeList 對象

 

 

for...of循環

可用於替換for..inforEach()

for...of 是ES6新引用的循環,一個數據結構只要部署了Symbol.iterator屬性,就被視為具有 iterator 接口,就可以用for...of循環遍歷它的成員。也就是說,for...of循環內部調用的是數據結構的Symbol.iterator方法。

 常用for...of遍歷的數據類型:Map、Set、Array、String等。

Array

 

 有上述可知

for...in遍歷的是鍵名,不能獲得鍵值。for...of遍歷的是鍵值

 

 

Set和Map

 

 

 

 

七、class類的支持

 

ES6 提供了更接近傳統語言的寫法,引入了 Class(類)這個概念,作為對象的模板。通過class關鍵字,可以定義類。

基本上,ES6 的class可以看作只是一個語法糖,它的絕大部分功能,ES5 都可以做到,新的class寫法只是讓對象原型的寫法更加清晰、更像面向對象編程的語法而已。

 

 

 

 

 

 八、對象的簡化賦值 

當對象的屬性名和變量名一致時可以簡化

 

 

 

九、展開運算符

這個比較簡單上圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM