호이스팅은 자바스크립트에서 변수나 함수 선언을 코드 상단으로 끌어올리는 현상이다. 호이스팅을 알면 코드의 흐름을 알고 변수나 함수의 선언 위치에 대해 판단할 수 있게 된다.
호이스팅이란?
호이스팅은 JavaScript에서 변수나 함수의 선언을 스코프의 최상단으로 끌어올리는 현상을 말한다. 코드 실행 전에 변수와 함수 선언이 메모리에 저장되어 선언 전에도 참조할 수 있게 된다.
호이스팅의 중요성
실행 컨텍스트, 스코프
기본 원리
function name() {})으로 정의된 함수는 호이스팅되어 선언 전에도 호출 할 수 있다. 함수 표현식(const name = function() {}, const name = () => {})으로 정의된 함수는 변수 호이스팅의 규칙을 따르므로 ReferenceError를 발생시킨다.호이스팅을 잘 다루기 위한 팁
즉시 실행 함수 표현식 (Immediately Invoked Function Expression, IIFE)
스코프 격리 즉시 실행 데이터 캡슐화
함수를 선언하고 바로 실행하는 패턴
이 방법은 외부 스코프와 격리할 때 사용한다. 전역 스코프를 오염 시키지 않는다.
//기본 형태
(function() {
// 코드
})();
//화살표 함수를 사용한 형태
(() => {
// 코드
})();
하지만 React에서 캡슐화가 필요한 로직은 커스텀 훅(custom hook)을 사용하여 분리하는 것이 가독성을 향상시킬 수 있다.