3.6 블록 내 함수 선언

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

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

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

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

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