원시 자료형 (primitive)
- 원시형의 종류: 문자형(string), 숫자(number), 불린(boolean), 심볼(symbol), null, undefined형, bignit 총 일곱 가지
- 원시값은 '값 그대로' 저장, 할당되고 복사
- '하나'의 정보만을 가지고 있는데, 예전에는 데이터 저장소의 한계로 하나의 원시자료형 밖에 담을 수 없었기 때문
- 값 자체에 대한 변경은 불가능, 하지만 변수에 다른 데이터를 할당할 수는 있음
참조 자료형 (reference)
- '참조에 의해'(by reference) 저장되고 복사
- 참조 자료형은 변수가 그대로 저장되는게 아니라, 저장되어있는 '메모리 주소'에 '참조 값'이 저장
- 할당된 변수를 복사할 땐 참조값(주소)이 복사되고 변수는 복사되지않음
- 참조 자료형의 종류: 배열 겍체 함수
- 주소를 복사하기 때문에 복사한 데이터에서 원소를 변경하게 되면 기존의 데이터에도 영향이 가게됨
'참조'한다라는 표현
변수의 주소를 '참조'하여 실제 변수가 있는 장소에 어떤 데이터가 있는지 도착하고 나서야 비로소 읽을 수 있음
이러한 코드가 주어졌을 때, 얼마나 많은 메모리를 필요로 할지 컴파일 타임은 알지못함, 사용자가 제공하는 값에 따라 달라지기 때문
그래서 컴파일러는 스택에 변수를 위한 공간을 할당할 수 없기 떄문에, 적당량의 공간을 요구하는 것을 런타임 해야함
메모리는 힙공간(heap space)로부터 할당
콜 스택?
-실제로 실행하는 코드를 순서대로 실행하는 곳
- 크기가 정해져 있는 타입
- 메모리 할당시 컴파일할 때 이미 계산이 이루어짐
heap ?
- 변수, 함수 저장, 호출드으이 작업이 발생하여 아래 내용들이 진행하는 공간,
- 컴퓨터 프로그래밍 시간 동안 사용할 메모리 공간을 할당하고 사용이 끝나면 운영체제가 쓸 수 있도록 반납하고 다음에 요구가 오면 재할당 할 수 있음
- 크기가 정해져있지 않음