더북(TheBook)

3.6 블록 내 함수 선언

수년 동안 함수 선언을 블록 안에 넣는 것은 사양에 포함되지 않았지만 허용되지 않은 것은 아니었다. 자바스크립트 엔진은 이를 “허용 가능한 확장”으로 처리할 수 있다. ES2015부터 블록의 함수 선언은 사양의 일부이다. 이에 대한 표준 규칙과 웹 브라우저의 느슨한 모드에서만 적용되는 “레거시 웹 의미 체계”도 있다.

먼저 블록의 함수 선언이 무엇인지 살펴보자.

function simple() {
    if (someCondition) {
        function doSomething() {
        }
        setInterval(doSomething, 1000);
    }
}
simple();

블록 안에 함수 선언(함수 표현식이 아님)이 있다. 그런데 함수 선언은 단계별 코드 이전에 호이스트되고 처리된다. 그렇다면 블록 내부의 함수 선언은 무엇을 의미할까?

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.