ES6的解構(gòu)賦值

為什么需要解構(gòu)賦值

解構(gòu)賦值可以讓我們的代碼更加簡(jiǎn)潔明了,大大減少我們的代碼量
解構(gòu)賦值可以分為數(shù)組解構(gòu),對(duì)象解構(gòu),字符串解構(gòu)

1、對(duì)象解構(gòu)

不使用對(duì)象解構(gòu)的情況:

const person = {
  name: 'little bear',
  age: 18,
  sex: '男'
}
let age = person.age
let name = person.name
let sex = person.sex

而使用對(duì)象解構(gòu)之后,以上的代碼就可以變成下面的形式:

const person = {
  name: 'little bear',
  age: 18,
  sex: '男'
}
let { name,age,sex } = person

對(duì)象解構(gòu)的書寫方式:

let {a,b} = {a:'值a',b:'值b'};
console.log(a + '|' + b);    //值a|值b

對(duì)象解構(gòu)沒(méi)有次序之分:

let {a,b} = {b:'值b',a:'值a'};
console.log(a + '|' + b);    //值a|值b

如果在對(duì)象解構(gòu)前就已經(jīng)定義了變量,那么解構(gòu)就會(huì)報(bào)錯(cuò):

let a;
{a,b} = {b:'值b',a:'值a'};
console.log(a + '|' + b);    //報(bào)錯(cuò)(Unexpected token =)

上方的代碼如果想不報(bào)錯(cuò),只要在對(duì)象解構(gòu)的外面加上一個(gè)()就可以了:

let a;
({a,b} = {b:'值b',a:'值a'});
console.log(a + '|' + b);    //值a|值b

2、數(shù)組解構(gòu)

以前的變量賦值方式:

let a = 1;
let b = 1;
let c = 1;

用數(shù)組解構(gòu)賦值的方式就可以將上方的代碼變?yōu)椋?/p>

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

數(shù)組解構(gòu)的兩邊格式要一致,如下的形式就會(huì)報(bào)錯(cuò):

let [a,[b],c] = [1,1,1];
console.log(a + '|' + b + '|' + c);    //報(bào)錯(cuò)( [1,1,1] is not iterable)

將上面的形式改成如下格式就可以了(保證數(shù)組兩邊形式一致):

let [a,[b],c] = [1,[1],1];
console.log(a + '|' + b + '|' + c);    //1|1|1

數(shù)組解構(gòu)與對(duì)象解構(gòu)不同,數(shù)組解構(gòu)是有次序之分的:
let [a,b] = [1,2];let [b,a] = [2,1]的a,b的值前后是不一樣的

解構(gòu)是可以有默認(rèn)值的:

let [a,b=1] = [2];
console.log(a + '|' + b);    //2|1

而如果是以下的形式:(與函數(shù)的默認(rèn)參數(shù)類似)

let [a=1,b] = [2];
console.log(a + '|' + b);    //2|undefined

默認(rèn)值中undefined和null的區(qū)別:

//undefined相當(dāng)于沒(méi)有寫,所以b是默認(rèn)值
let [a,b=2] = [2,undefined];
console.log(a + '|' + b);    //2|2
//null相當(dāng)于寫值了,值就是null
let [a,b=2] = [2,null];
console.log(a + '|' + b);    //2|null

3、字符串解構(gòu)

let [a,b,c] = 'ES6';
console.log(a + '|' + b + '|' + c);    //E|S|6
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 基本用法 ES6 允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)(Destructuring...
    嘉奇呦_nice閱讀 833評(píng)論 0 2
  • 1.數(shù)組的解構(gòu)賦值 2.對(duì)象的解構(gòu)賦值 3.字符串的解構(gòu)賦值 4.數(shù)值和布爾值的解構(gòu)賦值 5.函數(shù)參數(shù)的解構(gòu)賦值 ...
    卞卞村長(zhǎng)L閱讀 952評(píng)論 0 0
  • 前面的話 我們經(jīng)常定義許多對(duì)象和數(shù)組,然后有組織地從中提取相關(guān)的信息片段。在ES6中添加了可以簡(jiǎn)化這種任務(wù)的新特性...
    sunnyghx閱讀 833評(píng)論 0 0
  • 數(shù)組的解構(gòu)賦值 基本用法 ES6允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)(Destru...
    呼呼哥閱讀 474評(píng)論 0 3
  • 今天早上起的不是很早,等吃過(guò)早飯后,我洗衣服,他陪戚善博背誦古詩(shī),本來(lái)說(shuō)好的今天要去浮來(lái)山玩,也因?yàn)橛惺虑闆](méi)去成,...
    戚善博媽媽閱讀 176評(píng)論 0 0

友情鏈接更多精彩內(nèi)容