[JS] 즉시실행함수(IIFE)

Date:

Updated:

Categories:

Tags: ,


정의됨과 동시에 즉시 실행되는 함수, IIFE

즉시실행함수 (IIFE, Immediately Invoked Function Expression)은 말 그대로 정의되자마자 바로 실행되는 함수이다.

문법

함수를 ()로 감싸서 실행시킬 수 있다.

(() => {
  ...
})();

사용 이유

1. 필요 없는 전역 변수의 생성 감소

함수를 생성하면 전역 변수로서 남으면서 생기는 전역 스코프 오염을 줄일 수 있다.

2. private한 변수 생성 가능

외부에서 접근할 수 없는 자체적인 스코프를 가지기 때문에 클로저와 비슷한 목적으로 내부 변수를 외부로부터 private하게 보호가 가능하다.

활용

1. 단 한 번의 사용만 필요한 함수

  • 변수를 초기화하는 함수 예시
let isAdult;

((age) => {
  let currentAge = age;
  isAdult = currentAge >= 20 ? true : false;
})(20);

console.log(isAdult); // true
console.log(currentAge); // Uncaught ReferenceError: currentAge is not defined


2. 자바스크립트 모듈

  • 카운터 모듈 예시
const Counter = (() => {
  let current = 0;

  return {
    getValue: () => current,
    onIncreaseValue: () => ++current,
    onDereaseValue: () => --current,
  };
})();

console.log(Counter.getValue()); // 0
console.log(Counter.onIncreaseValue()); // 1
console.log(Counter.onDereaseValue()); // 0


Reference