-
[JS] 구조분해할당Development/Javascript 2021. 10. 12. 09:04
구조분해할당 또는 비구조화할당 이라고 합니다.
아래 MDN 문서를 참고해주세요.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
구조 분해 할당 - JavaScript | MDN
구조 분해 할당 구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식입니다.
developer.mozilla.org
구조분해할당은 객체 또는 배열의 속성을 변수에 담을 수 있는 표현식입니다.
객체로 사용해보겠습니다.
const user = { id: 'hyemin', nickname:'혜민', age: 31, email: 'hyemin@test.test' } const {id, nickname, age, email} = user; console.log(`아이디는 ${id}의 닉네임은 ${nickname}이고 나이는 ${age}입니다. 이메일주소는 ${email}`); // output -> 아이디는 hyemin의 닉네임은 혜민이고 나이는 31입니다. 이메일주소는 hyemin@test.test
만약 email 값이 없다면 어떻게 될까요?
const user = { id: 'hyemin', nickname:'혜민', age: 31 } const {id, nickname, age, email} = user; console.log(`아이디는 ${id}의 닉네임은 ${nickname}이고 나이는 ${age}입니다. 이메일주소는 ${email}`); // output -> 아이디는 hyemin의 닉네임은 혜민이고 나이는 31입니다. 이메일주소는 undefined
위와 같이 undefined로 뜹니다. 이 부분을 해결하기 위해 기본값을 지정해줄 수 있습니다.
const user = { id: 'hyemin', nickname:'혜민', age: 31 } const {id, nickname, age, email = test} = user; console.log(`아이디는 ${id}의 닉네임은 ${nickname}이고 나이는 ${age}입니다. 이메일주소는 ${email}`); // output -> 아이디는 hyemin의 닉네임은 혜민이고 나이는 31입니다. 이메일주소는 test
또한 변수명을 변경해줄 수 있습니다.
변수명 id를 변경해보겠습니다.
const user = { id: 'hyemin', nickname:'혜민', age: 31 } const {id:userId, nickname, age, email = test} = user; console.log(`아이디는 ${userId}의 닉네임은 ${nickname}이고 나이는 ${age}입니다. 이메일주소는 ${email}`); // output -> 아이디는 hyemin의 닉네임은 혜민이고 나이는 31입니다. 이메일주소는 test
이번에는 배열로 사용해보겠습니다.
const alphabet = ['A','B','C']; const [a,b,c,d] = alphabet; console.log(a,b,c,d); // output -> A B C undefined
배열은 순서대로 출력됩니다. d 값에 해당하는 배열의 자릿수에는 값이 없기 때문에 undefined로 출력됩니다.
그리고 배열에서 해당하는 값 만 가지고 오고 싶을때는 배열의 자릿수대로 , 로 구분하여 가져올 수 있습니다.
B 값만 출력해보겠습니다.
const alphabet = ['A','B','C']; const [,b] = alphabet; console.log(b); // output -> B
C 값만 출력한다면 아래와 같이 코드를 작성하면 됩니다.
const alphabet = ['A','B','C']; const [,,c] = alphabet; console.log(c); // output -> C
반응형'Development > Javascript' 카테고리의 다른 글
[JS] Object.assign (0) 2021.10.08 [JS] filter (0) 2021.10.06 [JS] map, forEach (0) 2021.10.05