var
, let
, const
는 JavaScript에서 변수를 선언하는 데 사용되는 키워드입니다. 이 세 가지 키워드는 몇 가지 중요한 차이점을 가지고 있습니다:
1. 변수 범위 (Variable scope):
var
: 함수 스코프(function scope) 를 가지고 있습니다. 즉, var
로 선언된 변수는 선언된 함수 내에서만 접근할 수 있습니다. 함수 내에서 선언된 var
변수는 호이스팅(hoisting)에 영향을 받습니다.let
과 const
: 블록 스코프(block scope) 를 가지고 있습니다. 중괄호({})로 둘러싸인 블록 내에서만 접근할 수 있습니다. 함수 내부 뿐만 아니라 if문, for문 등에서도 블록 스코프를 형성합니다. let
과 const
변수는 블록 내에서 선언된 이후에만 사용할 수 있습니다. 호이스팅은 발생하지 않습니다.2. 재할당 가능 여부 (Reassignment):
var
와 let
: 재할당이 가능합니다. 즉, 변수에 다른 값을 할당할 수 있습니다.const
: 재할당이 불가능합니다. const
로 선언된 변수는 초기에 할당된 값을 유지해야 합니다.3. 선언과 초기화 (Declaration and initialization):
var
와 let
: 선언과 초기화를 분리할 수 있습니다. 변수를 선언하고 나중에 값을 할당할 수 있습니다.const
: 반드시 선언과 동시에 초기화해야 합니다. const
변수는 재할당이 불가능하기 때문에 선언과 초기화를 분리할 수 없습니다.4. 전역 객체 속성 (Global object property):
var
로 선언된 변수는 전역 객체(window 객체 또는 global 객체)의 속성이 됩니다. 즉, var
로 선언된 변수는 전역 스코프에서 접근할 수 있습니다.let
과 const
: 전역 객체의 속성이 아닙니다. 전역에서let
과 const
로 선언된 변수는 전역 스코프에서 접근할 수 없습니다.요약하자면, var
는 함수 스코프를 가지며 재할당과 선언-초기화 분리가 가능합니다. let
은 블록 스코프를 가지며 재할당이 가능하고 선언과 초기화를 분리할 수 있습니다. const
는 블록 스코프를 가지며 재할당이 불가능하며 반드시 선언과 초기화가 동시에 이루어져야 합니다.