변수와 호이스팅

somedaycode·2021년 1월 12일
0
post-thumbnail

변수와 호이스팅 (hoisting)

변수는 3단계의 과정이 있다.

  1. 선언
  2. 초기화
  3. 할당
Var

선언과 초기화가 동시에 이루어진다.

console.log(msg); // undefined
var msg = 'Hello World';
let

선언과 초기화가 분리되어 진행된다.

console.log(msg); // Uncaught ReferenceError: Cannot access 'msg' before initialization
let msg = 'Hello World';

또한 let은 재선언은 안되지만 재할당은 가능하다.

let msg = 'Hello World';
let msg = 'hi'; //  Identifier 'msg' has already been declared
console.log(msg);
let msg = 'Hello World';
msg = 'hi';
console.log(msg); // "hi"
const

const로 선언된 변수는 재선언과 재할당을 할 수 없다.

const msg = 'Hello World';
msg = 'hi';
console.log(msg); // Uncaught TypeError: Assignment to constant variable.
호이스팅 (Hoisting)

변수의 선언문을 유효 범위의 최상단으로 끌어올린다.

  • var은 함수 안에서 사용한다면 함수 안에서만 유효하다.

const/let은 스코프 최상단에서 선언은 실행되지만 초기화 및 할당은 변수선언문에 도달했을 때 실행된다.

이것을 더 자세히 이해하기 위해서는 TDZ를 알아야한다.
참조: Don't Use JavaScript Variables Without Knowing Temporal Dead Zone

profile
천천히 꾸준히

0개의 댓글