반응형
호이스팅이란? ( Hoisting )
호이스팅을 변수 및 함수 선언이 물리적으로 작성한 코드의 상단으로 옮겨지는 것으로 가르치지만, 실제로는 그렇지 않습니다. 변수 및 함수 선언은 컴파일 단계에서 메모리에 저장되지만, 코드에서 입력한 위치와 정확히 일치한 곳에 있습니다. -출처 MDN
mdn에 의하면 호이스팅이란 위 내용과 같다.
간단하게 말하자면, 어디에 선언했는 지에 상관없이 선언을 제일 위로 끌어 올려주는 것처럼 실행된다는 의미로 해석할 수 있을 것 같다.
예제로 이해를 도와보자면, var 키워드를 사용할 수 있다.
// var (don't ever use this!) // let 추가 전까지는 var가 사용 되었음
// var hoisting (move declaration from bottom to top)
// has no block scope //
{
console.log(age); // undefined //
age = 4;
console.log(age);
var age; // 값 선언 전에 사용 할 수 있음 //
}
위의 코드를 보게 되면 선언되지 않은 age가 가장 먼저 콘솔에 출력될 수 있도록 코드가 작성되어있다.
그럴 경우 age에는 할당된 값이 없으므로 undefined가 출력된다.
여기서 var 키워드의 문제점 또한 확인할 수 있는데 만약 var가 아닌 let 키워드를 사용했다고 생각해보자.
{
console.log(age); // ERROR!
age = 4;
console.log(age);
let age;
}
let의 경우 에러가 발생하여 직관적으로 확인할 수 있다.
var의 경우 이러한 문제로 인해 let키워드가 추가된 이후에는 사용을 지양하고 있다.
반응형
'Code > JavaScript' 카테고리의 다른 글
OOP(Object Oriented Programming) (0) | 2020.10.28 |
---|---|
JavaScript Rest 파라미터, Spread 연산자, arguments 정리 / 차이 (0) | 2020.10.17 |
Javascript 클로저(Closure)의 개념 및 유용한 사용 예 (0) | 2020.09.20 |
Javascript 스코프(Scope)의 개념 / var, let, const 키워드, window 객체 (0) | 2020.09.20 |
Javascript 객체(Object) 값 추가, 삭제 및 키 찾기 방법 (0) | 2020.09.20 |