ES6——解構

一個很有用的知識點,解構!

一個非常實用卻比較簡單的知識點,特別是在處理後臺api互動的時候非常有用。

下面來直接示例簡單的用法:

①陣列型別

eg1:

let [a, b, c] = [1, 2, 3];

console。log(a,b,c)

=> 輸出:1,2,3

需要注意的是,解構要求左右兩邊的資料結構一樣。

什麼意思?比如,上面的例子,如果改成以下形式:

eg2:

let [a, b, c] = [1, [2, 3]];

console。log(a,b,c)

=>輸出:1,[2,3],undefined

所以,相當於給右邊的資料對應地取了一個別名,若沒有對應找到,

返回undefined

②json型別

let {name, age, job} = {

name:‘kissy’,

age:‘18’,

job:‘designer’

}

console。log(name, age, job);

=>輸出:kissy 18 designer

tricks1:解構的過程可以取別名,如:

let [a:a1, b:b1] = [1, [2, 3]];

console。log(a1,b1);

=>輸出:1, [2,3]

相當於給左邊的變數又取了一個別名

tricks2:可以給一個預設值(類似箭頭函式預設引數),如:

let [a, b, c=‘暫無資料’] = [1, [2,3]];

console。log(a,b,c)

=>輸出:1,[2,3],暫無資料

注意特殊情況,當右邊對應資料是null時候,需要做判斷處理

tricks3:利用解構,快捷替換兩個數位置,如:

let a=1;

let b=2;

[a, b] = [b, a]

console。log(a,b)

=>輸出:2,1

如果不用解構,用ES5之前的方法,則一般需要用一個

中間變數C來轉換。

tricks4:模組引入時,如 import {a,b} from'./module/xx.js',

實際上花括號部分就是一個結構

(同樣也可以取對應別名,如:import {a,b as b1} from'./module/xx.js')

tricks5:用於函式傳參,如:

function getData({a, b=‘暫無資料’}) {

console。log(a,b)

}

getData({a:1})

提示:需要注意的是,如果此處,a和b都不傳,則會有兩種寫法:

function getData({a=‘暫無資料0’, b=‘暫無資料’}) {

console。log(a,b)

}

getData({}) //第一種,傳遞一個空物件,但是這種,看上去不太優雅,

所以有第二種寫法:

function getData({a=‘暫無資料0’, b=‘暫無資料’}={}) {

console。log(a,b)

}

getData() //這種寫法,實際上是利用了,函式的引數可以給預設值的特性,而不是解構的特性

tricks6:用於函式內部返回值的解構處理。這個就不舉例子了。。。

算了,還是手勤寫完整吧。如:

function fn1(){

//todo。。。

return {

name:‘kissy’,

age:20

}

}

let {name,age:age1} = fn1()

console。log(name,age1)

最後,純手敲,如有誤,歡迎指正。