什么是解構?
正統解釋:按照一定模式,從數組和對象中提取值,然后對變量進行賦值。
直白理解:模式匹配,映射關系,只要等式放的兩邊模式一樣,一一對應,左邊的變量就會被賦予對應的值。
數組解構
變量聲明并賦值時的解構
變量先聲明后賦值時解構
默認值
為了防止從數組中取出一個值為undefined 的對象,可以為這個數組設置一個默認值。
交換變量
在沒有解構賦值的情況下,交換兩個變量需要一個臨時變量。
解析一個從函數中返回的數組
忽略某些返回值
將剩余數組賦值給一個變量
當解構一個數組是,可以使用剩余模式,將數組剩余部分賦值給一個變量。
注意:剩余元素必須是數組的最后一個元素,否則會拋出 SyntaxError 錯誤。
用正則表達式匹配提取值
用正則表達式方法exec() 匹配字符串會返回一個數組,該數組第一個值是完全匹配正則表達式的字符串,然后的值是匹配正則表達式括號內內容部分。結構賦值允許你輕易的提取出需要的部分,忽略完全匹配的字符串。
對象解構
基本賦值
無聲明賦值
注意:賦值語句周圍的括號,是使用對象字面解構賦值時不需要聲明的語法。{a,b} = {a:2, b:3} 不是有效的獨立語法,因為左邊的 {a, b} 被認為是一個塊而不是對象字面量。然而,({a,b} = {a:2, b:3}) 是有效的,正如 var?{a,b} = {a:2, b:3}。需要注意的是:這里的括號表達式需要一個分號在它前面,否則它會被當成一行中的函數執行。
給新的變量名賦值
默認值
給新的變量名并提供默認值
函數參數解構
如上代碼,解構的左邊被分配給右手邊的空對象字面值,也可以在沒有右側分配的編寫情況下編寫函數。但是,這樣在函數調用時,至少要提供一個參數,而在ES中,你可以直接調用函數,不用提供任何參數。
解構嵌套對象和數組
for of 迭代和解構
從作為實參的函數參數的對象中提取數據