Chapter 06: ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง - ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น (Destructuring)

๐Ÿ’ก ๋„์„œ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•ต์‹ฌ ๊ฐ€์ด๋“œ๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

6.1 ๊ฐ์ฒด ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง


// ES6 ์ด์ „
var person  = {
  first: "Alberto",
  last: "Montalesi"
}

var first = person.first;
var last = person.last;

// ES6
const person = {
  first: "Alberto",
  last: "Montalesi"
}

const { first, last } = person;

์ค‘์ฒฉ๋œ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฃผ์–ด์ง„ ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

const person = {
  name: "Alberto",
  last: "Montalesi",
  links:{
    social: {
      facebook: "https://www.facebook.com/alberto.montalesi",
    },
    website: "http://albertomontalesi.github.io/"
  }
}

const { facebook } = person.links.social;

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ์–ด ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

const { facebook:fb } = person.links.social;
// person.links.social.facebook ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐพ์•„ fb๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ๋ช…๋ช…
console.log(fb); // https://www.facebook.com/alberto.montalesi
console.log(facebook); //ReferenceError: facebook is not defined

๊ธฐ๋ณธ๊ฐ’์„ ์ „๋‹ฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

const { facebook:fb = "https://www.facebook.com"} = person.links.social;

6.2 ๋ฐฐ์—ด ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง


๊ธฐ๋ณธ ๋ฌธ๋ฒ•

const person = ["Alberto","Montalesi",25];
const [name,surname,age] = person;

์ƒ์„ฑํ•˜๋ ค๋Š” ๋ณ€์ˆ˜๊ฐ€ ๋ฐฐ์—ด์˜ ์›์†Œ๋ณด๋‹ค ์ ์€ ๊ฒฝ์šฐ

const person = ["Alberto","Montalesi",25];
const [name,surname] = person;
console.log(name,surname);
// Alberto Montalesi

๋‚˜๋จธ์ง€ ๋ชจ๋“  ๊ฐ’์„ ์–ป๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ: rest ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ

const person = ["Alberto", "Montalesi", "pizza", "ice cream", "cheese cake"];
const [name,surname,...food] = person ;
console.log(food);
// Array [ "pizza", "ice cream", "cheese cake" ]

6.3 ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง์„ ์ด์šฉํ•˜์—ฌ ๋ณ€์ˆ˜ ๊ต์ฒดํ•˜๊ธฐ


๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋งค์šฐ ์‰ฝ๊ฒŒ ์„œ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค.

let hungry = "yes";
let full = "no";
// after we eat we don't feel hungry anymore, we feel full, let's swap the values

[hungry, full] = [full, hungry];
console.log(hungry,full);
// no yes