JavaScript 자바스크립트 var, let, const 변수 차이점

자바스크립트 변수

자바스크립트는 동적 타입 언어로, 변수 선언에 있어서 유연함을 제공합니다. 이러한 유연함 속에서 var, let, const라는 세 가지 키워드는 각기 다른 특성을 지니고 있습니다. 최근의 모던 자바스크립트 개발에서는 var의 사용을 지양하고 let과 const를 선호하는 추세입니다. 이 글에서는 이들 키워드의 차이점을 살펴보고, 왜 현대 자바스크립트 개발에서 var보다 let과 const를 더 많이 사용하는지에 대해 설명하겠습니다.

var의 특징과 한계

var는 자바스크립트에서 가장 오래된 변수 선언 키워드입니다. 주요 특징은 다음과 같습니다.

함수 스코프 (Function Scope)

var로 선언된 변수는 함수 레벨 스코프를 가집니다. 즉, 함수 내에서 선언되면 함수 전체에서 접근 가능합니다.

JavaScript
if (true) {
    var exampleVar = "안녕하세요";
}
console.log(exampleVar); // "안녕하세요"
JavaScript

변수 호이스팅 (Variable Hoisting)

var 변수는 선언 전에 사용할 수 있습니다. 이는 코드의 가독성과 유지보수를 어렵게 만듭니다.

JavaScript
console.log(exampleHoist); // undefined
var exampleHoist = "호이스팅 예시";
JavaScript

재선언 가능

같은 이름의 변수를 여러 번 선언할 수 있습니다.

JavaScript
var exampleVar = "첫 번째 선언";
var exampleVar = "두 번째 선언";
console.log(exampleVar); // "두 번째 선언"
JavaScript

✔️이러한 특성 때문에, var는 예측하기 어려운 버그를 발생시킬 수 있으며, 현대의 모던 자바스크립트 개발에서는 그 사용을 지양하는 추세입니다.

let의 도입

ES6(ES2015)에서 도입된 let은 var의 대안으로 제시됩니다. let의 주요 특징은 다음과 같습니다.

블록 스코프 (Block Scope)

let으로 선언된 변수는 블록 레벨 스코프를 가집니다. 즉, 선언된 블록(중괄호 {}로 감싸진 구역) 내에서만 유효합니다.

JavaScript
if (true) {
    let exampleLet = "안녕하세요";
    console.log(exampleLet); // "안녕하세요"
}
// console.log(exampleLet); // ReferenceError: exampleLet is not defined
JavaScript

변수 호이스팅 방지

let으로 선언된 변수는 선언 전에 접근할 수 없습니다. 이는 코드의 안정성을 높여줍니다.

JavaScript
// console.log(exampleLetHoist); // ReferenceError: Cannot access 'exampleLetHoist' before initialization
let exampleLetHoist = "호이스팅 방지 예시";
JavaScript

재선언 불가능

같은 스코프 내에서 동일한 이름으로 변수를 재선언할 수 없습니다.

JavaScript
let exampleLet = "첫 번째 선언";
// let exampleLet = "재선언 시도"; // SyntaxError: Identifier 'exampleLet' has already been declared
JavaScript

✔️let은 더 엄격하고 예측 가능한 코드 작성을 가능하게 합니다.

const의 특징

또한, ES6에서 const도 도입되었습니다. const는 다음과 같은 특징을 가집니다.

블록 스코프

const로 선언된 변수는 블록 레벨 스코프를 가집니다. 즉, 선언된 블록 내에서만 유효합니다.

JavaScript
if (true) {
    const exampleBlockScope = "블록 스코프 예시";
    console.log(exampleBlockScope); // "블록 스코프 예시"
}
// console.log(exampleBlockScope); // ReferenceError: exampleBlockScope is not defined
JavaScript

재할당 불가능

한 번 선언된 값은 변경할 수 없습니다.

JavaScript
const exampleConst = "상수 선언";
// exampleConst = "재할당 시도"; // TypeError: Assignment to constant variable.
JavaScript

상수 사용

const는 상수(constant)를 나타내는 데 주로 사용됩니다. 값이 변경되지 않을 변수에 사용하는 것이 좋습니다.

JavaScript
const PI = 3.14;
console.log(PI); // 3.14
// PI = 3.14159; // TypeError: Assignment to constant variable.
JavaScript

결론

var, let, const는 자바스크립트에서 변수를 선언하는 세 가지 방법입니다. 각각의 스코프, 호이스팅, 재선언 가능성에서 차이가 있으며, 모던 자바스크립트 개발에서는 var의 한계를 극복하기 위해 let과 const 사용을 권장합니다. const는 값이 변하지 않을 것이 확실할 때, let은 그렇지 않을 때 사용하는 것이 좋습니다. 이러한 관행은 코드의 안정성과 가독성을 향상시키는 데 도움이 됩니다.

Leave a Comment