본문 바로가기

자바스크립트

[JS] Hoisting과 변수 선언 3가지 방법(var, const, let)

자바스크립트 변수 선언 3가지 방법


요약

  • var은 함수 스코프, let, const는 블록스코프(c와 비슷)
  • var은 재선언 가능, let, const는 불가능
  • let은 재할당 가능, const는 불가능(const는 선언과 동시에 초기화)

var (function scope)


  • 초기 값을 지정하지 않는다면, 변수는 값이 설정될 때까지 undefined 값
  • var는 함수 내부에 선언된 변수만 지역변수로 한정하며, 나머지는 모두 전역변수로 간주
  • Hoisting: 자바스크립트 코드는 함수 안에 있는 모든 변수를 함수 맨 꼭대기로 끌어올린 것처럼 동작
  • 변수 선언만 이루어지며 undefined로 할당됨

let (block scope)


  • let은 변수가 선언된 블록, 구문 또는 표현식 내에서만 유효한 변수를 선언
  • hoisting되지만 undefined 할당이 이루어지지 않음, TDZ 발생(선언 전 참조될 경우 ReferenceError)
  • var과 달리 let은 전역 객체의 속성 값을 생성하지 않는다.

const (block scope)


  • 블록 범위의 상수를 선언한다. (let과 같은 블록 유효범위)
  • 상수의 값은 재할당할 수 없으며 다시 선언할 수도 없음
  • 따라서 처음 선언할 때 초기화를 해야함
  • 보통 대문자를 사용해서 선언

Hoisting

  • 함수 hoisting : 함수에서는 함수 선언만 상단으로 끌어올려지만 함수 표현식(함수 리터럴)은 그렇지 않음
  • 호이스트란 변수의 정의가 그 범위에 따라 선언과 할당으로 분리되는 것
  • 선언문은 자바스크립트 엔진 구동시 최우선으로 해석되어 호이스팅 되고, 할당문은 런타임 과정에서 이루어져 호이스팅 되지 않음
  • 참고 블로그

'자바스크립트' 카테고리의 다른 글