본문 바로가기
창고(2021년 이전)

[JS] Hoisting(호이스팅)

by 측면삼각근 2019. 9. 28.
728x90
반응형

참조 : https://developer.mozilla.org/ko/docs/Glossary/Hoisting

 

Hoisting

호이스팅(hoisting)은 ECMAScript® 2015 언어 명세 및 그 이전 표준 명세에서 사용된 적이 없는 용어입니다. 호이스팅은 JavaScript에서 실행 콘텍스트(특히 생성 및 실행 단계)가 어떻게 동작하는가에 대한 일반적인 생각으로 여겨집니다. 하지만 호이스팅은 오해로 이어질 수 있습니다.

developer.mozilla.org

요약

호이스트 : 변수의 정의가 그 범위에 따라 선언과 할당으로 분리되는것.
선언만은 맨 위로 끌어올려짐. 할당은 순서대로.


JavaScript에서 실행 콘텍스트(생성 및 실행단계)가 어떻게 동작하는가? (선언 -> 실행 -> 할당 )

num = 6;
num + 7;
var num; 

컴파일 단계에서 선언부분이 호이스팅 되기때문에 위와같은 코드는 에러가 나지 않음!

var x = 1; // x 초기화
console.log(x + " " + y); // '1 undefined'
var y = 2;

// 아래 코드는 이전 코드와 같은 방식으로 동작합니다.
var x = 1; // Initialize x
var y; // Declare y
console.log(x + " " + y); // '1 undefined'
y = 2; // Initialize y

 



cf) 지역변수인가, 전역변수인가에 따라.

변수가 함수 내에서 정의되었을 경우, 선언이 함수의 최상위에
함수 바깥에 정의되었을 경우에는 전경 컨텍스트의 최상위에 정의된다.

※function-level인지, block-level인지 지역-전역변수의 구분이 다름.(var,let)

https://messycode.tistory.com/5?category=768112
와 함게 보면 좋음!

반응형

'창고(2021년 이전)' 카테고리의 다른 글

[Git] Command Line  (0) 2019.09.30
[JS] array Method(forEach, map, filter,reduce)  (0) 2019.09.29
[JS] truthy, falsy  (0) 2019.09.29
[JS] var, let, const  (0) 2019.09.29
CodeStates Pre과정시작 - Level1(JS)  (0) 2019.09.28