변수 in Js

LOCA·2023년 4월 24일
0

자바스크립트

목록 보기
6/10

변수?

"어플리케이션은 데이터를 다룬다, 아무리 복잡한 어플리케이션이라 해도 데이터를 입력받아 처리하고 그 결과를 출력하는 것이 전부다. 변수는 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념이다."

"컴퓨터는 사람을 모델로 디자인 되었기 때문에 사람과 유사하게 동작한다."

"컴퓨터, 조금 더 정확하게 말하자면 자바스크립트를 해석하고, 실행하는 자바스크립트 엔진도 사람과 유사하게 위 자바스크립트 코드를 실행한다."

"변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다."

이웅모, ⌜모던 자바스크립트 Deep Dive⌟, 위키 북스, 2020, 34~36쪽

자바스크립트 엔진은 자바스크립트 코드를 실행해 줍니다.
자바스크립트 코드를 실행하려면 가장 중요하게 두가지가 필요합니다.

바로 메모리와 연산능력이죠.

10 + 20

위와 같은 코드를 계산하려면 자바스크립트는 10, 20, + 와 같은 기호의 의미를 알고 있어야 합니다.
사람은 계산과 기억을 둘 다 뇌에서 하고 있지만, 컴퓨터는 이 두가지를 나눠서 구현했기 때문에, 10, 20, + 와 같은 기호를 저장하는 "메모리"와 이 연산을 수행하는 연산능력 "CPU"로 하여금 "연산"과 "기억"이 나뉘어서 수행됩니다.

메모리는 용량을 기준으로 나뉘어져 있고, 아파트 칸처럼 데이터를 저장 할 수 있는 각각의 메모리 셀의 집약체 입니다. 그리고 그 칸마다 고유한 메모리의 주소가 붙어져 있죠. 여기에 우리가 알고 있는 0과 1로 표현된 데이터들이 들어가고, 조금 더 효율적으로 관리하기 위해 그 칸을 묶어서 관리하죠. 그리고 필요에 따라 해당 칸의 주소로 접근하게 됩니다.

다시 코드로 돌아와서 자바스크립트 엔진이 10, +, 20과 같은 기호들을(정확하게는 리터럴과 연산자)같은 정보들은 이미 어딘가의 메모리에 저장해두고 있고, 연산능력도 가지고 있어 해당 코드를 계산 할 수 있게 됩니다. 그렇게 계산한 '30'이라는 값을 어디에 저장해 두고, 해당 코드는 종료됩니다.

계산은 완벽하게 끝났고, 저장도 했지만 문제가 있습니다. 그 30이라는 값을 다시 활용 할 수 없다는 것이죠. 그 무수히 많은 메모리 셀의 주소를 하나하나 찾을 수 없는 노릇이고(차라리 계산을 다시하는게 낫겠네요) 심지어 프로그램의 실행중에 어디에 저장할지 랜덤하게 결정되어 매 실행마다 주소는 변경되게 됩니다.

30은 어디로....?

그래서 프로그래밍 언어는 기억하고 싶은 값을 메모리에 저장하고, 저장된 값을 읽어 들여 재사용하기 위해 변수라는 메커니즘을 이용합니다. 여기에서는 "상자"라는 비유적인 표현을 사용했지만, 실제로 실행되는 일을 들여다보면 메모리의 영역중에서 "변수 영역"에서 빈공간을 확보해서 "식별자"를 저장하고, "데이터 영역"에서 빈 공간을 확보해서 데이터를 저장하고 (주소를 기억해 둡니다), 다시 "변수 영역"에서 해당 식별자로 검색하고, 방금 "데이터 영역"에 저장한 데이터의 주소를 "변수 영역"에 값에 할당합니다.

변수 영역에서 '저장 공간'을 확보해서, 식별자 hello를 저장하고, 데이터 영역에서 'world!'라는 데이터가 들어갈 공간을 확보해서 저장하고, 그 주소값을 다시 변수영역에서 hello로 검색해서 나온 위치의 값 영역에 저장했다!

요약하자면, 프로그램이 수행되기 위해서는, 마치 사람처럼 데이터를 '저장'하고 '연산'을 해야하는데, 그것들은 메모리와 cpu로 구현이 되어있고, 우리가 메모리에 무엇인가(연산의 결과, 연산에 필요한 데이터)를 저장하고 불러오는 상황에서는 '변수'라는 메커니즘을 사용한다는 것 입니다.

"변수 이름" 이란, 저장된 값을 식별 할 수 있는 고유의 이름이며,
"변수 값" 이란, 변수에 저장된 값을 의미하며,
"변수 할당" 이란, 변수에 값을 저장하는 행위를,
"변수 선언" 이란, 변수를 사용하기 위해 컴퓨터에 알리는 행위를 의미하고,
"변수 참조"란 변수에 할당된 값을 읽어오는것을 의미합니다.

profile
helloWorld

0개의 댓글