호이스팅

0

javascript

목록 보기
3/8

호이스팅

함수 선언부가 유효범위 최상단으로 끌어올려지는 현상

const a = 7;

const double = function(){
	console.log(a * 2);
}

double();

double이란 변수에 익명함수를 할당해서 함수표현식 작성.
함수의 아래에서 호출하면 정상 작동.

const a = 7;

double();

const double = function(){
	console.log(a * 2);
}

함수표현식을 작성하면 함수 위에서 호출하는 것이 불가능.

const a = 7;

double();

function double(){
	console.log(a * 2);
}

함수표현식 -> 함수선언문으로 변경하면 함수 위에서 호출 가능.

사용 이유

const a = 7;

function double(){
	console.log(a * 2);
    어쩌구저쩌구...
    무진장 어렵고 긴 코드...
    무진장 어렵고 긴 코드...
    무진장 어렵고 긴 코드...
    무진장 어렵고 긴 코드...
}

double();

위와 같이 함수를 위에 작성한 후 아래에 호출하면
double()이라는 함수가 어디에서 사용되는지 찾기도 전에
double함수의 로직을 먼저 읽어내려가야 하므로 해석하기 안좋다.

자바스크립트 함수는 실행되기 전에
함수 안에 필요한 변수값들을 모두 모아서 유효 범위의 최상단에 선언한다.

실제로 코드가 끌어올려지는 건 아니며,
자바스크립트 Parser 내부적으로 끌어올려서 처리하는 것이다.
실제 메모리에서는 변화가 없다.

profile
를 질투하는 그냥 개발자입니다.

0개의 댓글