ES6之解構賦值

ES6

一、基本用法

ES6 允許按照一定模式财搁,從數(shù)組和對象中提取值蘸炸,對變量進行賦值,這被稱為解構(Destructuring)尖奔。在此之前搭儒,變量賦值,只能直接指定值提茁。

let a = 1;
let b = 2;
console.log(a,b);// 1,2

而如今采用ES6語法淹禾,可以這樣寫:

  let a,b;
  [a,b]=[1,2];
  console.log(a,b);

也可以使用嵌套數(shù)組進行解構:

  let a,b,rest;
  [a,b,...rest]=[1,2,3,4,5,6];
  console.log(a,b,rest);//1 2 [3,4,5,6]
let [a, [[b], c]] = [1, [[2], 3]];
console.log(a,b,c);// 1 2 3

解構不僅可以用于數(shù)組,還可以用于對象茴扁。接下來我們對比下這兩種寫法铃岔,感受下ES6帶來的便利。

var expense={
type:"es6",
amount:"45"}峭火;
var type=expense.type毁习;//ES5寫法
var amount=expense.amount;//ES5寫法
console.log(type,amount);

如果使用ES6一句話就可以實現(xiàn)了:

const { type,amount}=expense卖丸;//ES6寫法

我們再舉個對象結構的例子:

  let a,b;
  ({a,b}={a:1,b:2})
  console.log(a,b);// 1,2
  let {a=10,b=5}={a:3};
  console.log(a,b);// 3 5

對象的解構與數(shù)組有一個重要的不同纺且。數(shù)組的元素是按次序排列的,變量的取值由它的位置決定坯苹;而對象的屬性沒有次序隆檀,變量必須與屬性同名,才能取到正確的值粹湃。上面例子等價于let { a: a, b: b } = { a: 1, b: 2 };
與數(shù)組一樣,解構也可以用于嵌套結構的對象泉坐。

let metaData={
    title:'abc',
    test:[{
      title:'test',
      desc:'description'
    }]
  }
  let {title:esTitle,test:[{title:cnTitle}]}=metaData;
  console.log(esTitle,cnTitle);// abc test

二为鳄、應用場景

1??:變量之間交換

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

交換變量a和b的值,常規(guī)做法是要通過一個定義中間變量來完成腕让,而通過解構賦值的寫法不僅簡潔孤钦,而且易讀,語義非常清晰纯丸。

2??從函數(shù)返回多個值

函數(shù)只能返回一個值偏形,如果要返回多個值,只能將它們放在數(shù)組或?qū)ο罄锓祷鼐醣恰S辛私鈽嬞x值俊扭,取出這些值就非常方便。

  function f(){
    return [1,2]
  }
  let a,b;
  [a,b]=f();
  console.log(a,b);// 1 ,2

變形一:

  function f(){
    return [1,2,3,4,5]
  }
  let a,b;
  [a,,,b]=f();
  console.log(a,b);// 1  4

變形二:

  function f(){
    return [1,2,3,4,5]
  }
  let a,b,c;
  [a,,...b]=f();
  console.log(a,b);//1 [3,4,5]

3??提取 JSON 數(shù)據(jù)
解構賦值對提取 JSON 對象中的數(shù)據(jù)坠陈,尤其有用萨惑。

let jsonData = {
  id: 42,
  status: "OK",
  data: [867, 5309]
};
let { id, status, data: number } = jsonData;
console.log(id, status, number);//42, "OK", [867, 5309]

如果覺得文章對你有些許幫助捐康,歡迎在我的GitHub博客點贊和關注,感激不盡庸蔼!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末解总,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子姐仅,更是在濱河造成了極大的恐慌花枫,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掏膏,死亡現(xiàn)場離奇詭異乌昔,居然都是意外死亡,警方通過查閱死者的電腦和手機壤追,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門磕道,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人行冰,你說我怎么就攤上這事溺蕉。” “怎么了悼做?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵疯特,是天一觀的道長。 經(jīng)常有香客問我肛走,道長漓雅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任朽色,我火速辦了婚禮邻吞,結果婚禮上,老公的妹妹穿的比我還像新娘葫男。我一直安慰自己抱冷,他們只是感情好,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布梢褐。 她就那樣靜靜地躺著旺遮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盈咳。 梳的紋絲不亂的頭發(fā)上耿眉,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天,我揣著相機與錄音鱼响,去河邊找鬼鸣剪。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的西傀。 我是一名探鬼主播斤寇,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拥褂!你這毒婦竟也來了娘锁?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤饺鹃,失蹤者是張志新(化名)和其女友劉穎莫秆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悔详,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡镊屎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了茄螃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缝驳。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖归苍,靈堂內(nèi)的尸體忽然破棺而出用狱,到底是詐尸還是另有隱情,我是刑警寧澤拼弃,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布夏伊,位于F島的核電站,受9級特大地震影響吻氧,放射性物質(zhì)發(fā)生泄漏溺忧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一盯孙、第九天 我趴在偏房一處隱蔽的房頂上張望鲁森。 院中可真熱鬧,春花似錦镀梭、人聲如沸刀森。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至埠偿,卻和暖如春透罢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冠蒋。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工羽圃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抖剿。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓朽寞,卻偏偏與公主長得像识窿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子脑融,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容