ES6小知識點總結

1.變量聲明let && const
let用於聲明變量,const用於聲明常量,兩者都爲塊級作用域。

const聲明的常量被設置完成之後就不能修改,如果聲明的是一個對象,那麼可以改變對象的值,只要內存地址不變即可。

let聲明的變量不存在變量提升特性,而var聲明的變量存在變量聲明提升,即變量可以在聲明之前使用,值爲undefined。

const在聲明時必須被賦值。

let不允許在相同作用域內重複聲明同一個變量。

2.解構賦值
解構:ES6允許按照一定模式從數組和對象中提取值,然後對變量進行賦值。

解構賦值允許指定默認值。(如果一個數組成員不嚴格等於===undefined,那麼默認值不會生效)。

數組的解構賦值是由其位置決定,對象的解構賦值由其鍵名決定。

字符串也可以解構賦值,被轉換成一個類似數組的對象。

解構賦值的規則是,只要等號右邊的值不是對象或數組,就先將其轉爲對象。

null和undefined無法轉換爲對象,所以會報錯。

3.模板字符串(Template String)
模板字符串使用反引號(``)來代替普通字符串中的雙引號和單引號,它可以被當作普通字符串使用,也可以用來定義多行字符串,或者在字符串中嵌入變量。

將表達式嵌入字符串中進行拼接時,用${}來界定。

如果在模板字符串中需要使用反引號,則在其前面使用反斜槓轉義。

使用模板字符串表示多行字符串,所有的空格和縮進都會被保留在輸出中。

4.箭頭函數
ES6中的箭頭函數是函數的一種簡寫形式。

箭頭函數幾點注意事項:

(1)this關鍵字指向當前上下文(即定義時所在對象,而不是調用時所在對象)。

(2)箭頭函數不可以被當做構造函數,也就是說不能使用new命令。

(3)不可以使用arguments對象,如果需要獲取參數,可以使用rest參數。

(4)箭頭函數不能用作Generator函數,不能使用yield命令。

5.函數的參數默認值
在ES6之前,不能直接爲函數的參數指定默認值,ES6可以直接將默認值卸載參數定義的後面。

指定了默認值後,函數的length屬性會失真,此時的length屬性將返回沒有指定默認值的參數個數。

函數參數變量是默認聲明的,不能用let和const再次聲明。

使用參數默認值時,函數不能有同名參數。

通常情況下,定義了默認值的參數應該是函數的尾參數。

6.rest參數和擴展運算符
ES6引入了rest參數(形式爲“...變量名”),用於獲取函數的多餘參數,就可以不用arguments對象了。

rest參數搭配的變量是一個數組。

rest參數只能是函數的最後一個參數。

擴展運算符是三個點(...),它的作用與rest相反,是將一個數組轉爲用逗號隔開的參數序列。

擴展運算符可以展開數組,因此不再需要使用apply將數組轉換爲函數的參數。

擴展運算符可用於合併數組。

只要具有Iterator接口的對象,就都可以使用擴展運算符,如Map和Set,Generator函數。

7.第7種數據類型——Symbol
ES6引入了Symbol,是一種新的原始數據類型,表示獨一無二的值,也是JavaScript語言的第7種數據類型。

Symbol函數不能使用new命令,因爲生成的Symbol是一個原始類型的值,不是對象,它是一種類似字符串的數據類型。

Symbol值不能與其他類型的值進行運算。

相同參數的Symbol函數的返回值是不相等的。

Symbol函數的可以接受一個字符串作爲參數,如果參數是一個對象,就會調用對象的toString方法將其轉爲字符串,然後生成一個Symbol值。

8.Set && Map數據結構
ES6提供了新的數據結構——Set,它類似於數組,但是成員的值都是唯一的,沒有重複。

Set本身是一個構造函數,用來生成Set數據結構。

Set的實例方法add()用於向Set結構添加成員,size返回成員數,delete()用於刪除某個值,has()用於判斷某個值是否爲Set成員,clear()用於清除所有成員。

在Set內部,兩個NaN是相等的。兩個對象總是不相等的。

ES6提供了Map數據結構,它類似於對象,但是對象只接受字符串作爲鍵名,而Map的“鍵”可以是各種類型。

Map的鍵嚴格相等,可是爲一個鍵,但NaN不嚴格相等,也將其視爲一個鍵。

Map實例的size屬性返回成員數,set()方法設置key對應的value,get()方法獲取指定key的值,has()方法判斷某個鍵是否在Map中,delete()方法刪除某個鍵,clear()方法清除所有成員。

9. Promise對象
Promise是異步編程的一種解決方案。

Promise兌現代表一個異步操作,有3種狀態:Pending(進行中)、Fulfilled(已成功)、Rejected(已失敗)。

Promise的缺點:(1)無法取消。一旦新建一個Promise,它就會立即執行;(2)如果不設置回調函數,其內部拋出的錯誤將不會反映到外部;(3)當處於Pending狀態時,無法得知目前具體進展到哪一步。

Promise是一個構造函數,用於生成Promise實例。構造函數接收一個函數作爲參數,該函數的兩個參數分別是resolve和reject,且resolve和reject分別爲一個函數,由JS引擎部署。

resolve函數的作用是將Promise對象的狀態由“未完成”變爲“成功”(Pending---Resolved),在異步操作成功時調用。

reject函數的作用是將Promise對象的狀態由“未完成”變爲“失敗”(Pending---Rejected),在異步操作失敗是調用。

Promise的實例可以用then()方法接受兩個回調函數作爲參數,分別爲Fulfilled和Rejected狀態的回調函數,其中第二個參數可選。

10.for...of循環
ES6引入了for...of循環作爲遍歷所有數據結構的統一方法。只要數據結構部署了Iterator屬性,就可以用for...of循環遍歷。

for...of可以使用的範圍:數組,字符串,Set結構,Map結構,類數組對象,Generator對象。

11.Class(類)
ES6引入了Class關鍵字可以定義類。

類的內部定義的所有方法都是不可枚舉的。

constructor方法時類的默認方法,通過new命令生成類的實例時自動調用該方法。

生成類的實例必須要用new關鍵字,否則會報錯。

類不存在變量提升。

如果類的方法內部有this關鍵字,它默認指向類的實例。

Class可以通過extends關鍵字實現繼承,子類必須在constructor方法中調用super方法,否則新建實例會報錯(因爲子類沒有自己的this對象,而是繼承父類的this對象)。

12.數值的擴展
ES6在Number對象上提供了Number.isFinite()和Number.isNaN(),前者用於判斷是否爲有限數值,後者判斷是否爲非數值。

ES6將全局parseInt()和parseFloat()移植到Number對象上,行爲不變,即表示爲Number.parseInt()和Number.parseFloat()。
————————————————
版權聲明:本文爲CSDN博主「nenliu」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u012194956/java/article/details/82703777

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章