공부한거 정리하는 노트에요

[JavaScript] const, let, var의 차이점

by 구설구설

JavaScript에서 변수를 선언할 때 사용하는 키워드는 const, let, var 세 가지가 있다.

각각의 키워드는 서로 다른 특성과 사용 용도를 가지고 있다.

 

#1 const

const는 상수(Constant)를 선언할 때 사용한다.

const로 상수를 선언할 때에는 항상 초기값이 필요하다.

const로 선언된 변수는 재할당이 불가능하다.

다만, 객체나 배열과 같은 참조형 데이터는 내부 값의 변경이 가능하다.

const z = 30;
z = 40; // TypeError: Assignment to constant variable.

const obj = { a: 1 };
obj.a = 2; // 가능
console.log(obj.a); // 2

위 코드에서 z 변수는 재할당이 불가능하나,

객체 obj의 프로퍼티 값은 변경할 수 있다.

 

#2 let

let은 변수를 선언할 때 사용한다.

let은 블록 스코프(block scope)를 가지며,

재할당은 가능하지만 재선언이 불가능하다.

if (true) {
    let y = 20;
    console.log(y); // 20
}
console.log(y); // ReferenceError: y is not defined

위 코드에서 y 변수는 if 블록 내부에서만 유효하며, 블록 외부에서는 접근할 수 없다.

이는 변수의 유효 범위를 제한해 의도치 않은 변수 오염을 방지한다.

 

#3 var

var 변수를 선언할 때 사용한다.

var은 함수 스코프를 가지며, 선언이 가능하다.

또한, var로 선언된 변수는 호이스팅(hoisting, 변수가 끌어올려 지는 현상)이 발생해 선언과 초기화가 변수 선언문 이전에 이루어진다.

console.log(x); // undefined
var x = 10;
console.log(x); // 10

위 코드에서 x 변수는 선언되기 전에 undefined로 초기화되며(호이스팅),

이후 10으로 값이 할당된다.


정리하면

  • var는 함수 스코프를 가지며, 재선언과 호이스팅이 가능하다.
  • let은 블록 스코프를 가지며, 재선언이 불가능하고 호이스팅은 발생하지만 초기화가 이루어지지 않는다.
  • const는 블록 스코프를 가지며, 재할당이 불가능하다. 그러나 참조형 데이터의 경우 내부 값은 변경할 수 있다.
  재선언 재할당
const X X
let X O
var O O

그냥 재할당을 해야 할 때는 let, 재할당 하지 않을 것 같으면 const를 쓰자.

'Language > JavaScript' 카테고리의 다른 글

[JavaScript] '=='와 '==='의 차이점 알아보기  (0) 2024.05.21

블로그의 정보

공부중임

구설구설

활동하기