자바스크립트에서 즉시 실행 함수(Immediate Function, IIFE)는 정의되는 순간 곧바로 실행되는 함수를 말합니다. 별도로 호출할 필요 없이 딱 한 번 실행하면 되는 초기화 작업이나 모듈 패턴 구현에 널리 사용됩니다.
일반 함수와 즉시 실행 함수의 차이
두 방식의 핵심적인 차이는 실행 시점과 변수 스코프(유효 범위)입니다. 아래 예제를 통해 확인해 보겠습니다.
1. 즉시 실행 함수의 경우
(function() {
var str = "display";
}());
function display() {
// str은 즉시 실행 함수 내부에 갇혀 있어 접근 불가
alert(str); // undefined
}변수 str은 즉시 실행 함수 내부에서 선언되었기 때문에 함수 외부에서는 접근할 수 없습니다. 이처럼 즉시 실행 함수는 내부 변수를 외부로부터 완전히 격리하여 전역 스코프의 오염을 막아주는 역할을 합니다.
2. 일반 함수의 경우
var str = "display";
function display() {
// 전역 변수 str에 접근 가능
alert(str); // "display" }
반면 위 예제에서 str은 전역 변수로 선언되었으므로, display() 함수를 호출하면 정상적으로 "display"가 출력됩니다.
매개변수를 전달하는 즉시 실행 함수
즉시 실행 함수에도 일반 함수처럼 인수를 전달할 수 있습니다.
var name = 'Amit';
(function(sName) {
alert('Student name = ' + sName);
}(name));
함수를 정의하면서 동시에 name 값을 인수로 넘겨 실행하기 때문에, 페이지 로드 시점에 바로 "Student name = Amit" 알림창이 뜹니다.
정리
- 즉시 실행 함수는 정의와 동시에 단 한 번 실행됩니다.
- 내부 변수가 외부에 노출되지 않아 전역 네임스페이스 오염을 방지합니다.
- 초기화 코드나 한 번만 필요한 로직을 깔끔하게 캡슐화할 때 유용합니다.