구버전/JavaScript

[Javascript] 즉시 실행 함수 IIFE

고래강이 2024. 1. 18. 18:20

즉시 실행 함수란? (IIFE)

정의되자마자 즉시 실행되는 함수로 소괄호로 함수를 감사 실행하는 문법이다.
(function () {
    console.log("IIFE");
})();

// 화살표 함수로도 사용 가능하다
(() => {
    console.log("IIFE");
})();
  • 선언과 동시에 출력한다는 것을 알 수 있다.
  • 기명 함수로 사용할 수 있지만 선언과 동시에 호출되어 반환되어 재사용 할 수 없기에 이름을 지어주는 것이 의미가 없다.

특징

  • 필요없는 전역 변수의 생성을 줄일 수 있다
  • private한 변수를 만들 수 있다.

 

활용예제

 

단 한번의 사용이 필요한 함수 

let isAdult;

(function init(age) {
    let currentAge = age;
    if (age >= 20) {
        isAdult = true;
    } else {
        isAdult = false;
    }
})(20);

console.log(isAdult); //  true
console.log(currentAge); //  Uncaught ReferenceError: currentAge is not defined
  • 변수를 초기화해주는 함수가 대표적으로 있으며 아래 호출에서 currentAge는 private하게 접근할 수 없는 변수가 되었다

 

const Counter = (function counterIIFE() {
    // 현재 counter 값을 저장하기 위한 변수
    let current = 0;

    return {
        getCurrentValue: function () {
            return current;
        },

        increaseValue: function () {
            current = current + 1;
            return current;
        },

        decreaseValue: function () {
            current = current - 1;
            return current;
        },
    };
})();

console.log(Counter.getCurrentValue()); // 0
console.log(Counter.increaseValue()); // 1
console.log(Counter.decreaseValue()); // 0
  • 위 예제의 current 변수는 private하기에 클로저를 통한 접근 외에는 접근 및 수정이 불가능하다