destructing

MDN 번역이 올라와있지 않네요. 누가 좀...^^

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

강의에서는 요즘 최근 트렌디한 언어에서는 대부분 사용하고 있어서 익숙할것이라고 했는데... 최근 언어라고는 들여다본적이 없어서 익숙하지가 않습니다. destructing라는 표현이 뭔가 파괴한다는 의미보다는 잘라내서 처리한다는 의미에 가깝다는.

Array

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

  let [c, d, f] = [1, 2, 3];
  console.log(c, d, f); // 1 2 3

  let [g, , h] = [1, 2, 3];
  console.log(g, h); // 1 3

  let [i = 3, j] = [, 2];
  console.log(i, j); // 3 2
}

2차까지는 let을 쓸 때 블럭을 지정하는 걸 그냥 저렇게 하면 되는걸 모르고 쓸데없이 if문 똥을 싸놓았습니다. 다른 코드를 보니 저렇게 블럭만 지정해놓더군요.

아래와 같이 let을 쓰지 않으면 구글 크롬 48 버전에서는 Invalid left-hand side in assignment라고 오류 처리합니다. 파이어폭스에서는 처리가 되고요.

{
  [k, l] = [1, 2];
  console.log(k, l); // 1 2
}

Object

{
    let {a:c, b:d} = {a:1, b:2};
    console.log(c, d); // 1 2
}

오브젝트 관련 내용은 설명을 들었는데 교안을 다시 봐도 잘 모르겠네요. 큰일이당. 혹 다른 분이 설명을 올리신다면 업데이트해보겠습니다. 하여간 오브젝트에 관한 설명 다음에 나오는 이 코드가 대단히 감동적이어야 하는데...이런 스타일에 익숙하지 않아서 그런지 그닥 감동은 ㅠㅠ

{
  const data = {
    result: 'ok',
    meta: {
      title: 's65',
      times: 8,
      location: 'piki'
    },
    items: [{
      age: 10,
      name: 'hika'
    }, {
      age: 20,
      name: 'roasterK'
    }]
  }

  let {
    meta: {
      title,
      times,
      location
    },
    items: [{
      age: age1,
      name: name1
    }, {
      age: age2,
      name: name2
    }]
  } = data;
  console.log(title, times, location, age1, name1, age2, name2);
  // s65 8 piki 10 hika 20 roasterK
}