변수와 호이스팅
in Develop on javascript
변수와 호이스팅?
변수와 호이스팅 (hoisting)
변수는 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