변수는 왜 필요한가?

pengooseDev·2023년 1월 15일
0
post-thumbnail

CPU와 메모리

CPU는 연산을 담당하고, 메모리는 데이터를 기억한다.

메모리는 메모리 셀의 집합체이다.
메모리 셀 하나의 크기는 1바이트(8비트)이며, 컴퓨너틑 메모리 셀의 크기, 즉 1바이트 단위로 데이터를 저장하거나 읽는다.


10 + 20

JS가 위의 식을 계산할 때 아래의 과정을 거친다.

  1. 10 + 20의 의미를 해석한다.
  2. 연산자(+)의 좌변(10)과 우변(20). 즉, 피연산자를 메모리 셀에 저장하기 위해 이진화한다.
  3. 메모리 주소를 임의로 할당한다. (연산 stack)
  4. CPU가 해당 값을 읽어 연산을 진행한다.
  5. 연산 결과값(30)도 임의의 메모리 주소에 할당한다.
  6. 연산이 끝나고 scope에서 벗어나면 피연산자들을 메모리에서 제거한다.(연산 메모리는 call stack)

문제점

연산 결과인 30은 재사용될 가능성이 높다.
하지만 해당 메모리 주소를 통해 직접 값에 접근하는 행위치명적인 오류를 발생시킬 가능성이 높다. OS가 사용하는 값을 변경하면 시스템이 멈출 수 있기 때문이다.
또한, 연산을 수행할 때마다 결과값의 메모리 위치가 바뀌기 때문에 이에 대해 직접 접근하는 방법은 옳은 방법이 아니다.

위와 같은 이유로 JS는 메모리에 대한 직접적인 접근을 허용치 않는다.


JS는 이를 어떻게 해결하는가.

변수를 이용해 해결한다.
변수는 두 가지 의미를 지닌다.

  • 값을 저장하기 위해 확보한 메모리 공간
  • 메모리 공간을 식별하기 위해 붙인 이름

즉, 변수는 메모리 공간의 위치를 가르키는 상징적인 이름이며, 컴파일러 또는 인터프리터에 의해 변수가 메모리 주소로 치환되어 실행된다.


용어 정리

  • 변수 이름 : 메모리 위치를 식별할 수 있는 고유한 이름.
  • 변수 값 : 변수 이름에 저장되어있는 변수의 값.
  • 할당 : 변수에 값을 저장하는 것.
  • 참조 : 변수의 값을 불러오는 것.

0개의 댓글