
解構(gòu):所謂解構(gòu)就是將聲明的一組變量于相同的解構(gòu)的數(shù)組或?qū)ο蟮脑財?shù)值 一一對應(yīng)
1、數(shù)組解構(gòu)
我們看看下面代碼,一起來了解數(shù)組解構(gòu)
傳統(tǒng)寫法:
let? numbers= [1,2,3];
let a = numbers [0];
let b = numbers [1];
let c = numbers [2];
console.log(a,b,c);//輸出1,2,3
解構(gòu)寫法:
let? [a,b,c] =? [1,2,3];
console.log(a,b,c);//輸出1,2,3;
是不是簡潔很多,這就是數(shù)組解構(gòu)最基本的寫法
A、當(dāng)聲明的參數(shù)多于賦值的參數(shù)時
let [a, b, c, d] = [1, 2, 3];
console.log(a, b, c, d); // 1, 2, 3, undefined
B、當(dāng)聲明的參數(shù)少于賦值的參數(shù)時
let [a, ,b] = [1,2,3];
console.log(a, b); ?// 1, 3
C、在數(shù)組解構(gòu)賦初始值
let ?[a, b, c = 4, d = 'hello'] = [1, 2, 3];
console.log(a, b, c, d); ? // 1, 2, 3, "Hello"
2、對象解構(gòu)
解構(gòu)不僅可以用于數(shù)組,還可以用于對象
let {name,age} = {name:"小文",age:"20歲"};
console.log(name,age);
注意:對象解構(gòu)和數(shù)組解構(gòu)不同的是,對象解構(gòu)的聲明變量部分必須和賦值的屬性名一一對應(yīng)才能取到對應(yīng)的值,數(shù)組解構(gòu)可以通過索引下標(biāo)取值
我們來看看對象解構(gòu)的原理?
其實(shí)對象的解構(gòu)賦值的內(nèi)部機(jī)制,是先找到對象同名屬性,然后在賦對應(yīng)的值,真正被賦值的是后者,而不是前者
一起看看代碼:
let {a:b} = {a:"aaa", b:'bbb' };
console.log(a); // a is not defined
console.log(b); // aaa
a是匹配的模式,b才是變量,真正被賦值的是b (b <=”bbb”),復(fù)制到控制臺打印試試
3、函數(shù)傳參的解構(gòu)
function add([x, y]){
return x + y;
}
add([1, 2]); // 3
4、rest運(yùn)算符和擴(kuò)展運(yùn)算符
應(yīng)用場景:主要用于不定參數(shù),所以ES6開始可以不再使用arguments對象
(1)、rest運(yùn)算符
rest 參數(shù)叫做不定(剩余)參數(shù), 用三個點(diǎn)+加數(shù)組值表示(…arr),把逗號隔開的值轉(zhuǎn)換成數(shù)組
function hello(...arr){
console.log(arr);
}
hello(1,2,3,4,5,);//輸出 [1, 2, 3, 4, 5]
注意:rest運(yùn)算符只能用在最后一個參數(shù)
看看代碼:
a.放rest運(yùn)算符放后面
b.放rest運(yùn)算符放前面
(2)、擴(kuò)展運(yùn)算符
也是用三個點(diǎn)+加數(shù)組值表示,是把數(shù)組或類數(shù)組對象轉(zhuǎn)換程一系列用逗號隔開的值,跟rest相反
let arr = [1,2,3,4,5];
console.log(...arr); //輸出1 2 3 4 5
5、rest運(yùn)算符配合解構(gòu)使用
let [a, ...rest] = [1, 2, 3, 4];
console.log(a);//1
console.log(rest);//[2, 3, 4];
以上就是解構(gòu)的相關(guān)內(nèi)容
個人學(xué)習(xí)心得,大神路過 ,不喜勿噴?? ?,如果你覺得不錯,歡迎點(diǎn)贊,訂閱,分享出去給需要的人,筆者將非常感謝
<完>
如果你是喜歡看書的朋友,不妨點(diǎn)擊【有驚喜】這是我在亞馬遜買的電子書,都非常珍貴。希望你能喜歡
作者:小處成就大事
簡介:一個喜歡分享和學(xué)習(xí)的前端開發(fā)程序猿,平時喜歡看看書,游泳,爬山,戶外騎行等,期待與志同道合的你成為朋友,一起交流、一起進(jìn)步。
初衷:閑時喜歡寫一些文章分享,記錄豐富自己??赡軟]有別人寫得好,但是我寫的每一篇都非常用心和投入。真心希望來到這里對你有所收獲,我將非常開心很欣慰。
博客:小處成就大事_新浪博客
如果有志同道合的朋友不妨加微信一起交流和學(xué)習(xí),期待你的到來
