Javascript - 원시자료(Primitive)

Taewoong Moon·2021년 5월 13일
0

Javascript에는 두가지 데이터 타입으로 나뉜다: 원시형(Primitive) vs 참조형(Reference)

원시형의 특징은 불변성이고 참조형의 특징은 가변성이다.

원시자료(Primitive) 종류를 알아보자!

  • String
  • number
  • bigint
  • boolean
  • undefined
  • symbol

이렇게 보면 우리가 javascript에서 쓰는 자주쓰는 데이터의 타입은 원시자료인것을 알 수 있다.

잠깐, 그런데 javascript를 배워본 사람이라면 조금 이상하다는 생각을 할 수 있다.

예를 들어, let 혹은 var로 변수를 선언하고 해당 변수에 string 이나 number 값을 할당한 이후에, 값의 변동을 원한다면 언제든지 바꿀 수 있었다.

let a = 10;
let b = 20;
a = 5;
b = 3;
console.log(a) //5
console.log(b) //3

?????

분명 Primitive 자료들은 불변형이라고 했는데 어째서 가변형인 것일까?

여기서 주의해야할 점은 Primitive 변수값자체와 Primitive의 값을 혼동해서는 안된다는 것이다.

좀 더 자세하게 설명하기 위해서 let a =10 이라는 변수는 어떻게 저장되는지 알아보자.

javascript 메모리 영역에서는 a = 10 이라는 것이 선언되면 a라는 변수의 주소를 생성한다.

그리고나서 a라는 변수자체를 메모리에저장하고 동시에 10이라는 값의 주소또한 저장한다.

?????

무슨의미인가.

a라는 변수자체도 주소에 저장하고, 10이라는 값의 변수자체도 저장한다. 이렇게 하는 이유는, 메모리 효율이 높아서라고 한다.

이렇게 되면 a자체의 주소에는 이름 a와 10이라는 값의 주소가 저장되게 된다.

감이조금 오는가?

이런구조라면 10이라는 a의 값이 변해도 a자체의 주소는 변하지 않는다는 것이다.
그렇기 때문에 a자체의 주소에서 a의 값주소만 계속해서 변하는 것이다.

그렇기 때문에 위의 6개 데이터타입은 Primtiive, 즉 불변성을 띄는 자료형이라는 것이다.

나도 오늘 처음에 동료들이 설명해줬을때는 이해를 못했지만, 문서와 다른 기술블로그들을 읽어가면서 이해를 조금하고 나만의 방식으로 풀어 써봤다.

혹시라도 틀린부분이 있거나 추가적인 내용건의가 있다면 언제든지 댓글은 환영이다.

profile
모든 코드에 의미를 담겠습니다.

0개의 댓글