3. 값 유형과 참조 유형(Value Types and Reference Types)
*값 유형(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 |