destructuring-assignment

๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น

๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์„ ๋ณ€์ˆ˜๋กœ ๋ถ„ํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํŠน๋ณ„ํ•œ ๋ฌธ๋ฒ•

๋ฐฐ์—ด ๋ถ„ํ•ด

์‚ฌ์šฉ๋ฒ•

let arr = ['Bora', 'Lee'];

let [firstName = 'First', surname = 'last'] = arr;

alert(firstName); // Bora
alert(surname); // Lee

ํŠน์ง•

  • ์šฐ์ธก์—๋Š” ๋ฐฐ์—ด ๋ฟ๋งŒ์ด ์•„๋‹Œ ๋ชจ๋“  ์ดํ„ฐ๋Ÿฌ๋ธ”์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

    let [firstName, surname] = 'Bora Lee'.split(' ');
    alert(firstName); // Bora
    alert(surname); // Lee
    let [one, two, three] = new Set([1, 2, 3]);
  • ๋ณ€์ˆ˜ ๊ตํ™˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    let guest = 'Jane';
    let admin = 'Pete';
    
    [guest, admin] = [admin, guest];
  • ...์œผ๋กœ ๋‚˜๋จธ์ง€ ์š”์†Œ๋ฅผ ๋ฐฐ์—ด๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

    let [name1, name2, ...rest] = ['kim', 'lee', 'hong', 'No'];
    
    alert(rest.length); //2
  • ํ• ๋‹นํ•  ๊ฐ’์ด ์—†์œผ๋ฉด undefined ์ทจ๊ธ‰ํ•œ๋‹ค

    let [first, last] = [];
    alert(first); //undefined
    alert(last); //undefined

๊ฐ์ฒด ๋ถ„ํ•ด

์‚ฌ์šฉ๋ฒ•

let {var1, var2} = {var1:โ€ฆ, var2:โ€ฆ}

์•„๋ž˜ ๋ณด์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ key์— ์ƒ์‘ํ•˜๋Š” ๋ณ€์ˆ˜์— ์—ฐ๊ฒฐ์ด ๋œ๋‹ค.

let { height, width, title } = { title: 'Menu', height: 200, width: 100 };
alert(title); // Menu
alert(width); // 100
alert(height); // 200

ํŠน์ง•

  • ๋ณ€์ˆ˜๋ช…์„ key๊ฐ’์ด ์•„๋‹Œ ๋ชฉํ‘œ ๋ณ€์ˆ˜(๋ณ„์นญ)๋กœ ์„ค์ • ํ•  ์ˆ˜ ์žˆ๋‹ค.

    let options = {
      title: 'Menu',
      width: 100,
      height: 200,
    };
    
    let { width: w, height: h, title } = options;
    
    // width -> w
    // height -> h
    // title -> title
    
    alert(title); // Menu
    alert(w); // 100
    alert(h); // 200
  • let์œผ๋กœ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜ ์„ ์–ธ์ด ์•„๋‹Œ ๊ธฐ์กด ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค

    ({ title, width, height } = { title: 'Menu', width: 200, height: 100 });

    ์ด๋•Œ, ()๋กœ ์•ˆ๋ฌถ์–ด ์ฃผ๋ฉด {}๋ฅผ ํ‘œํ˜„์‹์ด ์•„๋‹Œ ์ฝ”๋“œ๋ธ”๋Ÿญ์œผ๋กœ ์ธ์‹ํ•˜์—ฌ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.

  • ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ์‹œ ์ž๋™์œผ๋กœ ๋ถ„ํ•ดํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

    let options = {
      title: 'My menu',
      items: ['Item1', 'Item2'],
    };
    
    function showMenu({ title = 'Menu', width = 100, height = 200 } = {}) {
      alert(`${title} ${width} ${height}`);
    }
    
    showMenu(); // Menu 100 200

Last updated