brunch

You can make anything
by writing

C.S.Lewis

by 별똥별 shooting star Sep 01. 2023

자바스크립트,  원시값과 객체의 차이 알아보기

출퇴근길에 공부하는 자바스크립트1

자바스크립트에서 데이터 타입은 크게 원시 타입과 객체 타입으로 나뉜다. 이 두 타입은 여러 측면에서 차이가 있지만 이번시간에는 그중 "불변성"에 집중해보자 한다.


원시 타입의 불변성

원시 타입에는 숫자, 문자열, 불린 등이 있다. 이들은 모두 "불변성"을 가진다. 즉, 한 번 생성된 원시 값은 변경할 수 없다는 것이다. 변수에 원시값을 할당하면, 그 변수는 실제 값을 직접 저장하게 된다. 다른 변수에 할당할 경우, 원본 원시 값이 복사되어 전달된다. 이를 "값에 의한 전달"이라고 한다.


객체 타입의 가변성

반면에 객체 타입은 가변성을 가진다. 객체를 변수에 할당하면, 변수는 객체의 "참조값"을 저장하게 된다. 다른 변수에 할당할 경우 원본의 참조값이 복사되어 전달된다. 이를 "참조에 의한 전달"이라고 한다.


변수와 상수

"변수"는 이름에서 알 수 있듯이, 변수의 값은 재할당을 통해서 언제든지 변경이 가능하다. 이에 반해서 "상수"는 한 번만 할당이 가능하고, 그 이후로는 값을 변경할 수 없다. 그러니 이는 "불변성"과 다른 개념이다. 상수도 변수와 마찬가지로 원시 값이나 참조 값을 저장할 수 있다.


불변성의 중요성

원시 값의 불변성은 데이터의 신뢰성을 보장한다. 변수에 새로운 원시값을 재할당하면, 원래 메모리 공간의 값을 변경하는 것이 아니라 새로운 메모리 공간을 확보하여 그곳에 값을 저장한다. 따라서 원시 값을 재할당할 때마다 변수가 참조하는 메모리 주소는 바뀌게 되는 것이다.


즉, 원시값의 불변성은 예기치 않은 상태 변경을 방지하므로, 상태를 추적하기 쉽게 만들어 준다. 이는 프로그래밍에서 굉장히 중요한 요소이다.


매거진의 이전글 자바스크립트, 객체와 객체 리터럴이란?
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari