5/11 포스팅

김지영·2022년 5월 11일
0

[구조분해할당]

객체나 배열에서는 구조분해할당을 통해 필요한 키의 밸류를 가져올 수 있습니다. 예를 들어, dog이라는 객체가 있다고 합시다:

	const dog = {
    	name: "뿌꾸",
        age: 6,
        colour: "크림색",
        birthday: "2016-04-05"
    }

dog의 각 key-value 페어를 구조분해할당하려면 이런 방법을 쓸 수 있겠습니다:

	const {name, age, colour, birthday} = dog;

이후에 console.log(name) 등을 통해 각각의 새로 생성된 변수에 어떤 정보가 담겨있는 지 확인하실 수 있어요.

만약 이 중에 name과 colour 정보만 알고싶다면,

	const {name, colour} = dog

를 통해 name (= "뿌꾸")와 colour (= "크림색") 정보만 가져오는 것도 가능하지요. 이는 중괄호{} 안의 name과 colour가 dog의 첫번째와 세번째 키 이름과 같기 때문입니다. 만약 애초에 dog 안에 존재하지 않는 키이름을 구조분해할당하려 시도하신다면 아무일도 일어나지 않으니 주의하세요.

위에서는 객체에 대한 구조분해할당을 알아보았는데요. 이제 배열에 대해 알아보겠습니다.

"dogs"라는 이름을 가진 배열이 있다고 가정해 봅시다.

	let dogs = ["뿌꾸", "돌순"];

뿌꾸와 돌순을 각각 dog1과 dog2에 할당해주고 싶다면:
let [dog1, dog2] = dogs;
라고 한 뒤 console.log(dog1)와 console.log(dog2)를 사용해 제대로 할당이 되었는 지 확인하실 수 있습니다.

구조와 다르게, 배열은 key 값이 없지요? key 값을 맞춰줄 필요 없는 대신, 배열의 구조분해할당에서는 순서가 중요합니다.
"cats"라는 배열을 하나 더 생성해 보겠습니다.

	let cats = ["아리", "랑이", "호돌", "호순"];

let [cat1, cat3]에서 cat1과 cat3은 각각 어떤 cat을 할당받게 될까요?
["아리", "호돌"]이나 ["랑이", "호순"]이라고 생각하셨다면 땡입니다!
cat1과 cat3에서 숫자는 우리에게나 의미가 있지, 컴퓨터 입장에선 그저 변수의 이름의 한 부분에 지나지 않습니다. 여기서 정답은:

  	console.log(cat1); // => "아리"
  	console.log(cat3); // => "랑이"

입니다. 변수 이름과 관계없이 변수의 수가 2기 때문에, cats 배열 안의 첫 두 요소 (i.e. "아리", "랑이")가 각 변수에 할당되는 것이지요!

profile
아줌마

0개의 댓글