7.6 함수, 클로저, 정적 스코프

전통적인 프로그램

모든 함수를 전역에서 정의하고, 전역 스코프를 참조하지 않도록 함

최신 자바스크립트

함수가 필요한 곳에서 즉석으로 정의할 때가 많음

ex. 함수를 변수나 객체 프로퍼티에 할당, 배열에 추가, 다른 함수에 전달, 함수가 함수를 반환, 이름 없을 때도 있음

클로저

  • 함수가 특정 스코프에 접근할 수 있도록 의도적으로 그 스코프에서 정의하는 경우

  • 스코프를 함수 주변으로 좁히는(closing)

  • 스코프 안에서 함수를 정의하면 해당 스코프는 더 오래 유지됨

  • 함수를 정의해 클로저를 만들면 일반적으로는 접근할 수 없는 것에 접근할 수 있음

let globalFunc; // 정의되지 않은 전역 함수
{
    let blockVar = 'a'; // 블록 스코프에 있는 변수
    globalFunc = function() {
        console.log(blockVar);
    }
}

globalFunc(); // 'a'

Last updated