자바스크립트 변수의 특징
자바스크립트(JavaScript)가 변수를 다루는 방식은 C, C++, Java 등 다른 프로그래밍 언어와 크게 다릅니다. 자바스크립트는 동적 타입(dynamic typing) 언어로, 변수를 선언할 때 데이터 타입을 미리 지정하지 않으며 값이 할당되는 순간 타입이 결정됩니다.
자바스크립트에서 변수는 하나의 이름이 붙은 컨테이너(named container)로 생각할 수 있습니다. 컨테이너 안에 데이터를 담아두면, 이후에는 그 이름만으로 저장된 데이터를 간편하게 참조할 수 있습니다.
변수 선언 방법
자바스크립트 프로그램에서 변수를 사용하려면 반드시 먼저 선언해야 합니다. 전통적으로는 var 키워드를 사용하여 아래와 같이 변수를 선언합니다.
<script> var rank; var points; </script>
참고로 ES6(ECMAScript 2015)부터는 블록 스코프를 지원하는 let과 상수를 위한 const 키워드가 도입되었습니다. 현재는 예측 가능한 코드 작성을 위해 var보다 let과 const 사용이 권장됩니다.
변수 초기화란 무엇인가?
선언된 변수에 값을 저장하는 것을 변수 초기화(variable initialization)라고 합니다. 초기화는 변수를 생성하는 시점에 즉시 수행할 수도 있고, 실제로 값이 필요한 시점에 나중에 진행할 수도 있습니다.
<script> var rank = 1; // 선언과 동시에 초기화 var points; // 선언만 수행 points = 100; // 나중에 값 할당 </script>
메모리 할당 관점에서 본 자바스크립트 변수
C나 Java처럼 개발자가 변수의 메모리 크기를 직접 지정하는 언어와 달리, 자바스크립트 엔진은 값의 타입에 따라 메모리를 자동으로 할당하고 더 이상 사용하지 않는 메모리는 가비지 컬렉션(Garbage Collection)을 통해 해제합니다.
- 원시 타입(number, string, boolean, null, undefined): 값 자체가 스택(stack) 영역에 저장됩니다.
- 객체(object), 배열(array), 함수(function): 실제 데이터는 힙(heap) 영역에 저장되며, 변수에는 해당 메모리 주소인 참조(reference) 값이 저장됩니다.
이러한 구조 때문에 원시 타입 변수를 복사하면 값 자체가 복사되지만, 객체 타입 변수를 복사하면 참조 주소만 복사된다는 점을 반드시 기억해야 합니다. 이 차이를 이해하면 의도치 않은 데이터 변경 버그를 예방할 수 있습니다.