[JS] 즉시실행함수(IIFE)
정의됨과 동시에 즉시 실행되는 함수, 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