자바스크립트 에서 변수 선언

자바스크립트 에서 변수는 var, let, const 세 가지 키워드로 선언 할 수 있다.

세 가지 키워드의 차이점을 알아보기 이전에, 자바스크립트는 다음과 같은 특징을 가지고 있다.

자바스크립트 엔진은 코드를 한 줄씩 순차적으로 실행하기 전에,

선언문 (변수 선언문, 함수 선언문 등)을 찾아내 먼저 실행시킨다.

즉, 변수 선언이 어디에 있든 상관 없이 해당 스코프의 최상단에서 먼저 선언하는 특징 (호이스팅) 을 가지고 있다.

호이스팅 간단한 예제

foo 라는 변수를 선언과 동시에 값을 할당해주었으나, 선언문은 런타임 이전에 호이스팅 되어 실행되므로 암묵적으로 undefined가 할당되어 다음과 같은 결과가 나온다.

console.log(foo); // undefined
var foo = 1;
console.log(foo); // 1

var

var는 다음과 같은 특징을 가지고 있다.

  1. 선언 단계와 초기화 단계가 동시에 이루어진다.
console.log(foo); // undefined (호이스팅 되면서 초기화)
var foo = 1;
console.log(foo); // 1
  1. 재할당/재선언이 가능하다.
var foo = 1;
console.log(foo); // 1

// 재할당
foo = 2; 
console.log(foo); // 2

// 재선언
var foo = 3;
console.log(foo); // 3
  1. 함수 레벨 스코프를 가지고 있다.