Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

pgg-dev

[ECMAScript6 / ES6] 비구조화 할당 (구조 분해) / destructuring assignment 본문

JavaScript

[ECMAScript6 / ES6] 비구조화 할당 (구조 분해) / destructuring assignment

pgg-dev 2019. 11. 20. 16:35

< 객체 비구조화 할당 >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const ironMan = {
  name"토니 스타크",
  actor: "로버트 다우니 주니어",
  alias: "아이언맨"
};
 
function print(hero) {
  const { name, actor, alias } = hero;
  const text = `${alias}(${name}) 역할을 맡은 배우는 ${actor} 입니다.`;
  console.log(text);
}
 
print(ironMan); 
//아이언맨(토니 스타크) 역할을 맡은 배우는 로버트 다우니 주니어 입니다.

ironMan 객체와 print 함수가 선언되어 있고 print 함수 호출 시에 파라미터 값으로 ironMan 객체를 넘겨주는 소스코드이다.

 

1
const { name, actor, alias } = hero;

객체에서 값들을 추출하여 새로운 변수로 선언해주는 코드.

이 코드가 없었다면 text 변수에서 ${hero.alias}, ${hero.name}, ${hero.actor} 와 같이 일일이 hero. 을 입력해야 되는 번거로움을 감수해야 한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
const ironMan = {
  name'토니 스타크',
  actor: '로버트 다우니 주니어',
  alias: '아이언맨'
}
 
function print({ name, actor, alias }) {
  const text = `${alias}(${name}) 역할을 맡은 배우는 ${actor} 입니다.`;
  console.log(text)
}
 
print(ironMan); 
//아이언맨(토니 스타크) 역할을 맡은 배우는 로버트 다우니 주니어 입니다.

결과 값은 위의 코드와 같다.

이 코드는 print 함수의 파라미터에 객체 비구조화 할당한 것을 확인할 수 있다.

 

< 객체의 속성 이름 바꾸기 >

1
2
3
4
5
6
7
8
const animal = {
  name'멍멍이',
  type: '개'
};
 
const nickname = animal.name;
 
console.log(nickname); //멍멍이

비구조화 할당 시에 위 코드와 같다.

{기존 이름 : 수정될 이름} 을 넣어서 변경한다.

기존 animal 객체의 name이 nickname으로 바뀌는 것은 아니다.

 

< 배열 비구조화 할당 >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const deepObject = {
  state: {
    infromation: {
      name'gyu',
      languages: ['korean''english''japanese']
    }
  },
  value: 5
};
 
const { name, languages } = deepObject.state.infromation;
const { value } = deepObject;
 
const extracted = {
  name,
  languages,
  value
};
 
console.log(extracted);
//Object {name: "gyu", languages: Array[3], value: 5}

name, languages, value 값들을 밖으로 꺼내기 위해 비구조화 할당 문법을 두 번 사용한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const deepObject = {
  state: {
    infromation: {
      name'gyu',
      languages: ['korean''english''japanese']
    }
  },
  value: 5
};
 
const {
  state: {
    infromation: {
      name, languages: [first, secound]
    }
  },
  value
= deepObject;
 
 
const extracted = {
  name,
  first, secound,
  value
};
 
console.log(extracted);
//Object {name: "gyu", first: "korean", secound: "english", value: 5}

객체 깊숙하게 있는 값들을 한꺼번에 추출하는 방법이다.

위의 코드와 기능은 동일하지만, 값을 추출하기 위한 선언이 한 번이냐, 두 번이냐의 차이이다.

languages 배열을 위와 같이 비구조화할 수도 있다.

'JavaScript' 카테고리의 다른 글

[JavaScript] 호이스팅(Hoisting)  (0) 2020.01.09
[ECMAScript6 / ES6] Promise  (0) 2020.01.08
[JavaScript] 프로토타입(prototype)  (0) 2020.01.07
[JavaScript] 클로저 (closure)  (0) 2020.01.06
[JavaScript] DOM 이란?  (0) 2019.12.03
Comments