JavaScript를 처음 배우거나 코드를 작성하다 보면 var, let, const라는 키워드가 자주 등장합니다.
이 세 가지 키워드는 모두 변수를 선언하는 데 사용되지만, 각각의 특성과 사용 상황이 다릅니다.
이번 포스팅에서는 var, let, const의 차이와 적절한 사용법을 쉽게 설명해드리겠습니다.
var
- 함수 스코프: var로 선언된 변수는 함수 내부에서만 유효합니다. 하지만 블록(if, for 등) 내부에서는 무시됩니다.
- 호이스팅: var 변수는 선언이 함수의 최상단으로 끌어올려지기 때문에, 선언하기 전에 사용할 수 있습니다. 다만 초기화가 이루어지기 전까지는 undefined 값을 가집니다.
- 재선언 가능: 같은 스코프 내에서 다시 선언할 수 있습니다.
See the Pen var by saladent (@saladent) on CodePen.
let
- 블록 스코프: let으로 선언된 변수는 블록 내부에서만 유효합니다. 블록을 벗어나면 접근할 수 없습니다.
- 호이스팅: let 변수도 호이스팅되지만, 선언하기 전에는 접근할 수 없습니다.
- 재선언 불가: 같은 스코프 내에서 다시 선언할 수 없습니다.
See the Pen let by saladent (@saladent) on CodePen.
const
- 블록 스코프: const도 블록 내부에서만 유효합니다.
- 호이스팅: const 변수도 호이스팅되지만, 선언하기 전에는 접근할 수 없습니다.
- 재선언 불가: 같은 스코프 내에서 다시 선언할 수 없습니다.
- 값 변경 불가: const 변수는 선언과 동시에 초기화되어야 하며, 이후에는 값을 변경할 수 없습니다. 단, 객체나 배열의 경우 내부 속성이나 요소는 변경할 수 있습니다.
See the Pen const by saladent (@saladent) on CodePen.
언제 무엇을 사용할까요?
- var: 호이스팅이나 함수 스코프가 필요한 특수한 경우를 제외하고는 최신 코드에서는 잘 사용하지 않습니다.
- let: 값이 변할 수 있는 변수에 사용합니다. 블록 스코프를 가지므로, 블록 내부에서만 유효한 변수를 선언할 때 유용합니다.
- const: 값이 변하지 않는 상수나 재할당이 필요 없는 변수에 사용합니다. 객체나 배열과 같은 참조 타입의 경우, 내부 값은 변경될 수 있지만, 참조 자체는 변경되지 않으므로 안전하게 사용할 수 있습니다.
요약
- const: 변하지 않는 값을 선언할 때 사용
- let: 변할 수 있는 값을 선언할 때 사용
- var: 가능한 사용하지 않기
코드를 작성할 때는 가급적 const를 사용하고, 값이 변경될 필요가 있을 때만 let을 사용하는 것이 좋습니다.
var는 혼란을 일으킬 수 있으므로, 최신 JavaScript 코드에서는 피하는 것이 좋습니다.