호이스팅(Hoisting)

Yeeeeeun_IT·2022년 8월 7일
0

호이스팅(Hoisting)이란?

변수와 함수 코드를 실행하기 전 변수 및 함수 선언에 대한 메모리 공간을 미리 할당하는(가장 먼저 실행) 것이다.

자바스크립트는 인터프리터에 의해 한줄씩 순차적으로 실행되지만, 코드 실행보다 먼저 코드소스 평가과정을 거치게 되는데, 이때 모든 선언문을 먼저 실행하고 이후에 소스코드를 실행한다.
즉, 자바스크립트는 변수 선언 위치에 상관없이 가장 먼저 선언문을 실행하기 때문에 선언문이 코드의 최상단으로 끌어올려진 것처럼 작동하는 것이 바로 호이스팅이다.

console.log(test); // undefined
var test; // 변수 선언문

위의 경우 콘솔이 먼저 작성되었더라도 변수 선언이 먼저 실행되기 때문에 참조에러(Reference Error)가 아닌 undefined가 출력된다.

var vs let, const

var는 이미 선언된 변수를 다시 선언할수 있기 때문에 기존값을 수정해버리는 등 오류발생 위험이 있어서 현재는 사용하지 않는 변수 선언 방식이다.

let과 const는 선언전까지 변수에 접근이 불가하다.
TDZ(temporal dead zone)
TDZ은 스코프의 시작부터 초기화되는 지점까지 변수를 참조할수 없는 일시적 사각지대를 말한다.

  • 변수는 let, const를 사용할 것.
  • 익명함수보다 화살표 함수 사용하기
    함수 표현식과 함수 선언식..
    const를 사용한 화살표형 함수 선언 방식을 통해 에러를 방지할 수 있다
profile
🍎 The journey is the reward.

0개의 댓글