더북(TheBook)

그런데 이 함수는 어차피 한 번만 사용할 함수인데, const 키워드 때문에 init 식별자를 더 이상 사용할 수 없게 됩니다. 이러한 현상을 가리켜 전역 스코프가 오염됐다고 표현합니다. 이런 경우에 즉시 실행 함수로 함수를 정의하면 전역 스코프가 오염되는 것을 방지할 수 있습니다.

(function init(){
  console.log("initialized!");
})();

즉시 실행 함수는 한 번 실행되고 나면 메모리에 데이터가 남아 있지 않습니다. 그래서 init 식별자는 한 번도 사용되지 않은 것처럼 인식됩니다. 실제로 즉시 실행 함수를 호출한 다음에 재호출하면 참조 오류가 발생하면서 실행되지 않습니다.

(function init(){
  console.log("initialized!");
})(); // initialized!
init(); // ReferenceError: init is not define

매개변수가 있는 함수도 즉시 실행 함수로 정의해서 실행할 수 있습니다. 코드를 다음과 같이 작성하면 됩니다.

(function sum(a, b){
  console.log(a + b);
})(10, 20); // 30
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.