3. 값 유형과 참조 유형(Value Types and Reference Types)

2020. 4. 5. 21:03
반응형

*값 유형(Value Types) 예시

[Step 1]

변수 a를 선언하고, 50이라는 숫자값을 부여했다.

그 다음 변수 b는 a를 바라보도록 선언했다.

 

 

그리고 b를 불러오면? 아래와 같이 결과는 50이다.

 

 

[Step 2]

50이라는 값을 이미 가지고 있던 a에, 10이라는 다른 값을 덮어씌웠다.

그러면 a를 바라보고 있던 b는 어떻게 될까?

결과는 아래와 같이 여전히 50이다. 처음 가지고 있던 a값이 업데이트 되지 않았기 때문이다. 

 


*참조유형 예시(Reference Types)

값 유형과 참조 유형의 차이를 다음 예시로 알아본다.

 

배열 yellow를 선언하고 "하나", "둘"이라는 값을 넣는다.

그 다음 새로운 변수 red를 선언하고, 배열 yellow를 바라보도록 한다.

 

 

그리고 red(나중에 선언한 변수)에 "셋"이라는 값을 끼워넣으면?

yellow(처음에 선언한 배열)에도 마찬가지로 "셋"이라는 새로운 값이 들어가있는 걸 확인할 수 있다.  


첫 번째 예시(value)에서

let b=a; 라고 선언할 때, a의 '값을 복사'해온다.

그래서 따로 업데이트를 하지 않는 이상, 처음에 복사해온 값을 그대로 가지고 있는다.

value types에는 숫자, 불린타입, 문자열 등이 포함된다.

 

두 번째 예시(reference)에서

const red = yellow; 라고 선언할 때에는, yellow의 값을 을 복사해오는 게 아니라 배열을 '참조'한다.

그래서 바라보고 있는 대상의 내용이 변하고, 이를 따로 업데이트하지 않아도 수정된 내용을 그대로 불러온다.

reference types에는 Array, Object, function 등이 포함된다.

 

 

 

참고

https://github.com/yjs03057/33-js-concepts

https://www.youtube.com/playlist?list=PL7jH19IHhOLMmmjrwCi7-dMFVdoU0hhgF

반응형

'한 걸음 > TS & JS' 카테고리의 다른 글

6. 스코프(Scope)  (0) 2020.04.18
5. Typeof / Instance of 연산자  (0) 2020.04.12
4. 형 변환(Type conversion)  (0) 2020.04.12
2. 원시 자료형(Primitive Types)  (0) 2020.04.05
1. 호출스택(Call Stack)  (0) 2020.04.05

BELATED ARTICLES

more