
즉시 실행 함수 표현식(Immediately Invoked Function Expression, IIFE)은 JavaScript에서 함수를 정의하고 즉시 실행하는 패턴을 나타낸다. 이 패턴은 함수를 정의한 후 즉시 호출하여 생성된 함수의 실행 결과를 얻을 수 있다. IIFE는 주로 스코프를 만들어 변수의 유효 범위를 제한하거나 모듈 패턴을 사용할 때 유용하게 활용된다.
(function() {
// 함수 본문
})();
// 화살표 함수를 사용하여 정의된 함수를 만들고 즉시 실행한다.
(() => {
// 여기에 함수 본문이 들어갑니다.
})();
// argument가 parameter로 전달되어 함수가 즉시 실행된다.
(function(parameter) {
// 함수 본문
})(argument);
(function() {
var message = "Hello, IIFE!";
console.log(message);
})();
위의 코드에서는 함수를 선언하고 즉시 호출하여 "Hello, IIFE!"라는 메시지를 콘솔에 출력한다. 이렇게 하면 message 변수가 IIFE의 스코프 안에서만 유효하며, 외부에서는 접근할 수 없다. 이렇게 스코프를 만들어서 변수 충돌을 방지하고 전역 네임스페이스를 깨끗하게 유지할 수 있다.
IIFE를 사용하여 함수를 즉시 실행하는 이점 중 하나는 전역 스코프 오염을 방지하는 것이며, 또 다른 이점은 모듈 패턴을 사용하여 변수와 함수를 캡슐화하고 외부에 노출시키지 않을 수 있다는 점이다. 예를 들면:
var myModule = (function() {
var privateVar = "I am private!";
function privateFunction() {
console.log("This is a private function!");
}
return {
publicVar: "I am public!",
publicFunction: function() {
console.log("This is a public function!");
}
};
})();
console.log(myModule.publicVar); // 접근 가능
console.log(myModule.privateVar); // undefined (접근 불가능)
myModule.publicFunction(); // 호출 가능
myModule.privateFunction(); // 에러 (접근 불가능)
이렇게 모듈 패턴을 활용하면 전역 스코프에서 변수와 함수를 보호하면서 필요한 부분만 외부에 노출시킨다.