一個很有用的知識點,解構!
一個非常實用卻比較簡單的知識點,特別是在處理後臺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)
最後,純手敲,如有誤,歡迎指正。