즉시실행함수표현 (IIFE)
- Immediately Invoked Function Expression
- 정의되자마자 바로 실행되는 함수
IIFE 샘플 소스
var calculator = (function() {
function sum(a, b) {
return a + b;
}
calculator.sum = sum;
})();
console.log(calculator.sum(2, 4));
IIFE 사용하는 이유?
- 전역 scope 오염(변경) 방지
- 즉시실행함수표현 내 선언된 변수는 지역변수 -> 외부 접근 및 변경 불가
- 공통 js 모듈 내 전역변수를 사용하는 것은 불안정 -> 덮어쓰기 가능하기 때문
let globalVar;
(function() {
const localVar = "local scope";
globalVar = "global scope";
})();
console.log(`globalVar : ${globalVar}`);
console.log(`localVar : ${localVar}`);
공통 js 모듈 샘플 소스
let SaladUtils = SaladUtils || {};
SaladUtils = (function () {
const SALAD_DS_CD = {
CHICKEN: "0001",
PORK: "0002",
BEAN: "0003",
CHEESE: "0004",
};
return {
product: {
getSaladDsCd: function (saladDsStr) {
return SALAD_DS_CD[saladDsStr];
},
},
};
})();
const SaladPdUtils = SaladUtils.product;
console.log(SaladPdUtils.getSaladDsCd("CHICKEN"));
console.log(SaladPdUtils.getSaladDsCd("PORK"));
console.log(SaladPdUtils.getSaladDsCd("BEAN"));
console.log(SaladPdUtils.getSaladDsCd("CHEESE"));
console.log(SaladPdUtils.getSaladDsCd("NULL"));
결론
- 공통 관리가 필요한 상수나 2번 이상 호출될 가능성이 있는 함수는 공통 모듈로 관리하자! 🎯