변수
변수
개요
JavaScript에서 변수(Variable)는 데이터를 저장하고 참조하기 위한 기본적인 수단입니다. 변수는 동적 타이핑(Dynamic Typing)을 특징으로 하며, 선언 방식([var](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/var/var)
, [let](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/let/let)
, [const](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/const/const)
)에 따라 스코프(Scope)와 호이스팅(Hoisting) 동작이 달라집니다. 본 문서에서는 변수의 선언 방법, 스코프, 데이터 타입, 호이스팅 개념 및 최선의 사용법을 다룹니다.
변수 선언과 할당
1. 선언 키워드
JavaScript에서 변수를 선언하는 방법은 세 가지입니다:
- var
: 함수 스코프를 가지며 호이스팅 발생.
- let
: 블록 스코프를 가지며 호이스팅되지 않음.
- const
: 불변 참조를 위한 블록 스코프 변수.
var name = "Alice"; // 함수 스코프
let age = 25; // 블록 스코프
const PI = 3.14; // 상수 (재할당 불가)
2. 선언과 할당의 분리
변수는 선언과 동시에 값을 할당할 수 있지만, 분리도 가능합니다:
let score;
score = 95; // 나중에 할당
3. var
, let
, const
비교
특성 | var |
let |
const |
---|---|---|---|
스코프 | 함수 스코프 | 블록 스코프 | 블록 스코프 |
호이스팅 | O | X | X |
재선언 가능 | O | X | X |
재할당 가능 | O | O | X |
스코프(Scope)
1. 전역 스코프 (Global Scope)
변수를 함수 외부에서 선언하면 전역 스코프를 가집니다:
let globalVar = "전역 변수";
2. 함수 스코프 (Function Scope)
var
로 선언된 변수는 함수 내부에서만 접근 가능:
function example() {
var localVar = "함수 스코프";
}
console.log(localVar); // ReferenceError
3. 블록 스코프 (Block Scope)
let
과 const
는 {}
내부에서만 유효:
if (true) {
let blockVar = "블록 스코프";
}
console.log(blockVar); // ReferenceError
호이스팅 (Hoisting)
1. 개념
변수 선언이 코드 실행 이전에 상단으로 이동되는 현상입니다. var
는 값 초기화는 호이스팅되지 않으며, let
과 const
는 호이스팅이 발생하지 않습니다.
console.log(hoistedVar); // undefined
var hoistedVar = 5;
console.log(hoistedLet); // ReferenceError
let hoistedLet = 10;
2. 호이스팅의 함정
var
의 호이스팅은 예기치 않은 동작을 유발할 수 있습니다. 따라서 let
과 const
사용이 권장됩니다.
데이터 타입과 변수
1. 원시 타입 (Primitive Types)
변수에 할당된 값이 직접 저장됩니다:
- Number: 42
, 3.14
- String: "Hello"
- Boolean: true
, false
- Null: null
- Undefined: undefined
- Symbol: Symbol('id')
2. 참조 타입 (Reference Types)
객체나 배열은 메모리 주소를 참조합니다:
let user = { name: "Bob" };
let arr = [1, 2, 3];
3. 타입 확인
[typeof](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%ED%83%80%EC%9E%85/typeof)
연산자로 타입을 확인할 수 있습니다:
console.log(typeof age); // "number"
console.log(typeof user); // "object"
최선의 사용법 (Best Practices)
1. 의미 있는 이름
변수명은 명확하고 묘사적이어야 합니다:
// 좋음
let userAge = 20;
// 나쁨
let x = 20;
2. 전역 변수 최소화
전역 변수는 네임스페이스 오염을 방지하기 위해 최소화해야 합니다.
3. const
우선 사용
변수 값이 변경되지 않을 경우 const
를 사용해 불변성을 보장합니다.
4. 호이스팅 문제 피하기
var
대신 let
과 const
를 사용해 호이스팅 관련 버그를 방지합니다.
참고 자료
- MDN Web Docs - JavaScript Variables
- ECMAScript 2022 Language Specification
- JavaScript.info - Variables
이 문서는 JavaScript 변수의 기본 개념과 활용 방식을 체계적으로 정리하여 초보자와 중급 개발자 모두에게 도움이 되도록 구성되었습니다.
이 문서는 AI 모델(qwen-3-235b-a22b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.