본문 바로가기
HTML + CSS + 자바스크립트

즉시 실행 함수 사용하기

by Ellie.P 2023. 12. 7.
반응형

즉시 실행 함수

함수를 정의하면서 동시에 실행까지 하는 함수

⭐️ 한 번 실행되고 나면 메모리에 데이터가 남지 않음

(function(){})();

일반적으로 함수를 선언하면 전역 스코프에 정의되어, 프로그램이 종료되기까지 메모리에서 사라지지 않는다.

 

아래 코드는 함수 표현식으로 정의된 init() 함수이다.

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

이 함수는 어차피 한 번만 사용할 함수인데,

const 키워드에 할당했기 때문에 프로그램이 종료되기 전까지 init 식별자는 재사용 불가하다.

이러한 현상을

전역 스코프가 오염됐다

고 표현한다.

이런 경우 즉시 실행 함수로 함수를 정의하면 전역 스코프가 오염되는 것을 방지할 수 있다.

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

왜냐하면 즉시 실행 함수는 한 번 실행되고 나면 메모리에 데이터가 남지 않는다.

즉, init 식별자는 한 번도 사용하지 않은 것처럼 인식된다.

 

위의 코드처럼 즉시 실행 함수를 호출한 다음에 init()으로 호출하면 init이 정의되어있지 않다고 오류가 발생한다.

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

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

즉시 실행 함수를 활용한다면 init 식별자로 함수를 다시 만들었을 때도 아무런 문제가 되지 않는다.

 

최초로 딱 한 번 실행되거나 전역스코프를 오염시키지 않고 자유롭게 사용하고 싶을 때, 즉시 실행 함수를 활용하면 된다.

반응형