변수와 호이스팅
변수와 호이스팅 (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
Author And Source
이 문제에 관하여(변수와 호이스팅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@somedaycode/variableshoisting저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)