구버전/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하기에 클로저를 통한 접근 외에는 접근 및 수정이 불가능하다