검색
검색
공개 노트 검색
회원가입로그인
JavaScript 중급 지침서

제1장: 고급 변수와 데이터 타입 (let, const, var, 원시 타입 vs 참조 타입)

변수 선언 방식의 진화: var, let, const

자바스크립트에서 변수 선언은 오랜 시간 동안 많은 변화를 겪어왔습니다. ES6 이전에는 오직 var만 사용할 수 있었지만, 이제는 letconst라는 새로운 키워드를 함께 사용함으로써 코드의 예측 가능성과 안정성이 크게 높아졌습니다.

var는 특정 함수 또는 전역 범위에서 변수를 선언할 수 있는 반면, letconst는 중괄호({})로 묶인 블록 내에서만 유효한 변수를 만듭니다. 이를 블록 스코프라고 하며, 각 코드 블록마다 변수의 유효 영역이 제한되어, 의도치 않은 값의 변경을 막아줍니다.

또한, var는 같은 이름으로 여러 번 선언하는 것이 가능하지만, letconst는 한 블록 내에서 중복 선언을 허락하지 않습니다. 특히, const는 변수를 한번 할당하면 다시는 값을 바꿀 수 없습니다. 이런 특성 덕분에 데이터의 변조 가능성을 미리 차단하는 효과가 있습니다. 즉, 자주 바뀌는 값은 let으로, 변하지 않아야 하는 값은 const로 선언하는 것이 좋은 습관입니다.

데이터 타입의 기초 이해: 원시 타입과 참조 타입

자바스크립트의 변수에 들어가는 값은 두 가지 종류로 나뉩니다. 바로 원시 값(Primitive Type)과 참조 값(Reference Type)입니다.

원시 타입에는 string, number, boolean, null, undefined, symbol, bigint 등이 속합니다. 이 값들은 변수를 선언하면, 실제 데이터가 변수 안에 직접 저장됩니다. 예를 들어, 숫자를 표시하는 변수에 새로운 값을 할당하면 이전의 값과는 전혀 관계가 없어집니다. 복사할 때마다 독립적인 값을 갖게 되죠.

반면, 객체(Object), 배열(Array), 함수(Function) 등은 참조 타입입니다. 이 값들은 변수에 실제 데이터가 저장되는 것이 아니라, 데이터가 저장되어 있는 메모리 공간의 주소, 즉 참조값만 저장됩니다. 복사하거나 다른 변수에 할당할 경우, 같은 객체를 가리키는 또 다른 이름이 생길 뿐, 실제 데이터는 하나뿐입니다. 그래서 한 곳을 변경하면, 그 객체를 참조하고 있는 모든 변수에서 영향을 받습니다.

변수 선언과 타입의 관계, 그리고 실전활용

자바스크립트는 매우 유연한 동적 타입 언어입니다. 변수에는 어떤 종류의 값도 넣을 수 있고, 필요에 따라 타입이 바뀌기도 합니다. 그러나 이런 유연성은 실수로 인한 버그를 유발하기도 합니다. 변수 선언 시 letconst를 적절히 활용하고, 자료형의 특성을 이해함으로써 오류를 예방할 수 있습니다.

예를 들어, 객체나 배열을 다룰 때 const로 선언한다고 해서 내부 값을 바꿀 수 없는 것은 아닙니다. 변수 자체를 다시 할당하지 못한다는 의미이기 때문에, 객체 속성 값 변경, 배열 요소 추가·삭제는 여전히 가능합니다. 이 차이를 명확히 이해하여, 코드의 의도와 일치하는 변수 선언 방식을 택하는 것이 중요합니다.

자바스크립트에서 변수와 데이터 타입에 대한 깊은 이해는 견고하고 유지보수하기 쉬운 코드를 작성하는 데 필요한 첫걸음입니다. 앞으로 이어질 내용을 통해 다양한 활용법을 실전에 응용해 보세요.


공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기