변수

Bard·2022년 1월 27일
0

Deep Dive

목록 보기
2/3

프로그래밍 언어는 기억하고 싶은 값을 메모리에 저장되고 저장된 값을 읽어 들여 재사용하기 위해 변수라는 메커니즘 제공

변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 공간을 식별하기 위해 붙인 이름 / 값의 위치를 가리키는 상직적인 이름

메모리

컴퓨터는 CPU를 사용해 연산하고 메모리를 사용해 데이터를 기억
메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체
메모리 셀 하나의 크기는 1바이트(8비트) 이며, 컴퓨터는 메모리 셀의 크기, 즉 1바이트 단위로 데이터를 저장하거나 읽어들인다

각 셀은 고유의 메모리 주소를 갖는다
이 메모리 주소는 공간의 위치를 나타내며 0부터 시작해서 메모리의 크기만큼 정수로 표현 예를 들어 4GB 메모리는 0부터 4,294,967,295(0x00000000 ~ 0xFFFFFFFF)까지의 메모리 주소를 갖는다

컴퓨터는 모든 데이트를 2진수로 처리한다
따라서 메모리에 저장되는 데이터는 데이터의 종류와 상관없이 모두 2진수로 저장
10+20 연산을 할 때 메모리에 저장하고 CPU는 이값을 읽어 연산을 수행한다

상직적 의미인 변수는 프로그래밍 언어의 컴파일러 또는 인터프리터에 의해 값이 저장된 메모리 공간의 주소로 치환되어 실행

자바스크립트는 개발자의 메모리 직접 접근 허용X
자바스크립트는 개발자가 직접 메모리 접근을 하는 것을 허락하지 않아 변수를 사용해야 한다 / c 같은 경우 포인터로 메모리 접근

변수를 통해 메모리 접근

이러한 이슈로 개발자가 직접 메모리 주소를 통해 값은 저장하고 참조할 필요가 없고 변수를 통해 안전하게 값에 접근
변수 이름을 사용해 참조로 요청하면 자바스크립트 엔진을 변수 이름과 매핑된 메모리 주소를 통해 메모리 공간에 접근해서 저장된 값을 반환

var sum = 1 + 2;
  1. 값 1, 2를 메모리 임의의 주소에 저장
  2. CPU 가 1, 2 값을 가진 메모리에 접근한 뒤 연산을 한다
  3. 연산된 값을 새로운 메모리에 담는다
  4. sum 이라는 변수(값을 가지고 있는 메모리의 주소)를 통해 연산된 값 사용
  5. 가비지 컬렌션이 자동으로 1, 2 값을 가진 메모리 블록을 회수
  6. 메모리에는 3이라는 값과 그 값이 남고 그 값은 sum 을 통해 접근

javascript 가비지 컬렉션

profile
영차영차🐢

0개의 댓글