JavaScript 변수: var, let, const의 차이와 사용법
JavaScript에는 변수를 선언할 때 사용할 수 있는 주요 키워드로 var
, let
, 그리고 const
가 있습니다. 각 키워드는 스코프(scope), 호이스팅(hoisting), 재할당 가능 여부 등에서 차이를 보이며, 적합한 상황에 따라 사용하는 것이 중요합니다.
1. var
특징
- 함수 스코프:
var
로 선언된 변수는 함수 내부에서만 유효하며, 블록 스코프를 지원하지 않습니다. - 호이스팅: 변수 선언이 코드의 최상단으로 끌어올려지는 것처럼 동작합니다. 그러나 초기화는 선언된 위치에서 이루어집니다.
예시
function example() {
if (true) {
var x = 10;
}
console.log(x); // 10 (블록 밖에서도 접근 가능)
}
example();
사용 권장 여부
현대적인 JavaScript 코드에서는 var
사용을 지양합니다. 대신 let
과 const
를 사용하여 보다 명확하고 안전한 코드 작성이 가능합니다.
2. let
특징
- 블록 스코프:
{ }
로 묶인 블록 내에서만 유효하며, 블록을 벗어나면 변수에 접근할 수 없습니다. - 호이스팅: 선언은 호이스팅되지만 초기화되지 않아 선언 전에 접근하면 오류가 발생합니다.
예시
if (true) {
let y = 20;
console.log(y); // 20 (블록 내부에서만 유효)
}
// console.log(y); // ReferenceError: y is not defined
사용 권장 여부
let
은 재할당이 필요한 변수에 적합하며, 블록 스코프 덕분에 코드의 가독성과 안전성을 높여줍니다.
3. const
특징
- 블록 스코프:
const
도{ }
로 묶인 블록 내에서만 유효합니다. - 재할당 불가: 선언된 변수는 재할당할 수 없습니다. 하지만 객체나 배열의 속성은 변경할 수 있습니다.
- 호이스팅: 선언은 호이스팅되지만 초기화되지 않아 선언 전에 접근하면 오류가 발생합니다.
예시
const z = 30;
// z = 40; // TypeError: Assignment to constant variable.
const obj = { a: 1 };
obj.a = 2; // 가능 (객체 내부 속성 변경)
console.log(obj.a); // 2
사용 권장 여부
const
는 재할당이 필요 없는 상수나 객체를 선언할 때 사용됩니다. 기본적으로 변수를 선언할 때는 const
를 우선 사용하고, 필요 시 let
으로 대체하는 것이 좋습니다.
요약
키워드 | 스코프 | 재할당 | 호이스팅 | 사용 사례 |
---|---|---|---|---|
var |
함수 스코프 | 가능 | 선언 후 초기화 | 구식 코드에서 사용되며 지양 |
let |
블록 스코프 | 가능 | 선언 후 초기화 | 재할당이 필요한 경우 사용 |
const |
블록 스코프 | 불가능 | 선언 후 초기화 | 재할당이 필요 없는 경우 사용 |
var
는 과거 코드에서 주로 사용되었지만, 현재는 let
과 const
가 ES6 이후로 표준이 되었으며 더 안전하고 명확한 코드 작성을 돕습니다. 기본적으로는 const
를 사용하고, 값의 재할당이 필요할 때만 let
을 사용하는 것을 권장합니다.
Leave a comment