본문 바로가기

개발에 도움이 되는/JavaScript

원시 자료형, 참조 자료형

- 원시 자료형

데이터 타입 중 변경이 불가능한 값(immutable value)을 말하며, 자료형 Type으로는 string, number, boolean, undefined, null, symbol 이렇게 6가지가 있다.

원시 자료형은 stack에 생성되고 변수가 할당될 때, 메모리의 고정 크기로 값을 저장하고 해당 주소를 직접 참조한다.

 

immutable value기 때문에 메모리 영역에서의 변경이 불가능하며, 재할당은 가능하다.

 

 ex)

let str = "Hello";
str = "World";

 

처음 str에는 메모리에 "Hello"가 생성되고 식별자 str은 메모리에 생성된 문자열 "Hello"의 메모리 주소를 가리킨다.

그리고 다음 구문에서 str은 메모리에 있는 "Hello"를 수정하는 것이 아니라 새로운 문자열 "World"를 다른 메모리에 생성하고 식별자 str은 이것을 가리키게 된다. 이때 "Hello"와 "World" 모두 메모리에 존재하고 있다. 

 

 

 

 - 참조 자료형

객체 타입의 값이며 변경 가능한 값(mutable value)을 뜻하며, 원시 자료형이 아닌 모든 자료형을 참조 자료형이라 부르며, 대표적으로 객체, 배열, 함수가 있다.

참조 자료형 변수는 heap에 생성되고 heap 메모리의 값은 값이 할당된 메모리의 주소를 참조한다.

 

mutable value기 때문에 메모리 상에서 변경이 가능하다.

 

 ex)

let a = [];
let b = a;

b.push(1);

console.log(a === b); // true

a에 빈 array를 할당하였고, b는 a를 할당했다. 그 후 b에 1을 push하게 되면 참조하고 있는 메모리에 1이 들어간다.

a, b는 같은 메모리 주소를 참조하고 있으므로 두 값은 같다.

반응형

'개발에 도움이 되는 > JavaScript' 카테고리의 다른 글

this  (0) 2022.04.03
클로저(Closure)  (0) 2022.03.13
스코프(Scope)  (0) 2022.02.27
실행 컨텍스트(Execution Context)  (0) 2022.01.15
호이스팅(Hoisting)  (1) 2022.01.05