[TIL] 2021.03.11_원시자료형,참조자료형

나라리야·2021년 3월 11일
1

TIL-JS

목록 보기
4/4

오늘은 아침부터 어제 시험봤던 스프린트 리뷰를 듣고
터미널을 처음 만져봤다..이게뭐지? 영화에서만 보던 까만창에 하얀글씨...
해커가된거같았지만.. 실제는 혹시라도 문자를 잘못쳐서 오류가날까봐 독수리타자로 하나씩 쳤다는...
오늘 koans 40문제를 후딱 다 풀어버리고(주말에 복습!꼭하자) 내일은 터미널로 깃헙에 커밋하는걸 집중적으로 연습해봐야겠다

Achievement Goals(학습목표)

원시 자료형(primitive type)과 참조 자료형(reference type)의 구분이 왜 필요한지에 대해서 영상을 보고 이해할 수 있다.
원시 자료형과 참조 자료형의 차이를 이해하고, 각자 맞는 상황에서 사용할 수 있다.
원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조 자료형이 할당될 때는 보관함의 주소(reference)가 담긴다는 개념을 코드로 설명할 수 있다.
참조 자료형은 기존에 고정된 크기의 보관함이 아니라, 동적으로 크기가 변하는 특별한 보관함을 사용한다는 것을 이해할 수 있다.

원시 자료형이란?

자바스크립트에서 원시 타입의 데이터(primitive data types; 원시 자료형)는 객체가 아니면서 method를 가지지 않는 6가지의 타입
string, number, bigint, boolean, undefined, symbol, (null)
을 말합니다
따라서 변수 하나에 데이터가 하나의 원시자료형 밖에 담을 수 밖에없다 (여러개x)

변수에는 하나의 데이터만 담습니다. / 원시자료형의 데이터가 담기는 보관함을 staek이라고한다!

 const num1 = 123;
 const num2 = 123456789;
"hello world!"
"hello codestates!"
// "hello world!" 와 "hello codestates!"는 모두 변경할 수 없는 고정된 값입니다.

let word = "hello world!" 
word = "hello codestates!" 
// 하지만, word라는 변수에 재할당을 하여 변수에 담긴 내용을 변경은 가능합니다.

const num1 = 123;
num1 = 123456789; // 에러 발생
// const 키워드로 선언하면, 재할당은 불가합니다.

참조 자료형이란?

자바스크립트에서 원시자료형이 아닌 모든 것이 참조 자료형이다
대표적으로 배열[],객체{},함수(function())이 대표적이다 (함수도 참조자료형이라니!)
이런 자료형을 자바스크립트에서는 참조 자료형(reference data type; 참조 타입)이라고도 부릅니다.

참조자료형은 "데이터의 크기가 동적으로 변하는" 특별한 데이터 보관함이 필요, 그리고 이 데이터가 위치한 곳(메모리 상 주소)을 가리키는 주소가 변수에 저장 된다. 즉, 변수에는 특별한 데이터 보관함을 찾아갈 수 있는 주소가 담겨있는 것이고 이 주소를 따라가다보면 특별한 데이터 보관함을 찾을 수 있는 것인데 이 보관함은 자기마음대로 사이즈를 늘렸다 줄였다를 할 수 있다.
그리고 이 특별한 데이터 보관함을 heap이라고 부른다!

그럼 왜 참조자료형이라고 부를까? 바로 데이터 값을 읽는게 아닌 주소를 참조하여 실제 변수가 있는 장소에 도착하고 나서야 그 데이터보관함 안에 있는 정보를 읽을 수 있기 때문이다 !

원시 자료형과 참조 자료형의 특징
원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조 자료형이 할당될 때는 보관함의 주소(reference)가 담깁니다.
그래서 참조 자료형은 기존에 고정된 크기의 보관함이 아니라, 동적으로 크기가 변하는 특별한 보관함을 사용할 수 있습니다.

이제 그냥 변수,함수가 아니라 그 안에있는 값이 원시형인지 참조형인지 구분할 수 있게되었다!
좋은거겠지? 이번주말에는 변수와 자료형 부터 객체까지 꼭 다시 동영상을 보면서 복습해보기로하자!
화이팅!

profile
Code의 美를 추구하는 개발자 🪞

0개의 댓글