자바스크립트에서 괄호 ()로 감싸진 함수를 즉시 실행 함수 표현식(Immediately Invoked Function Expression, IIFE) 또는 즉시 실행 함수(Self Executing Function)라고 부릅니다.
함수를 괄호로 감싸는 목적은 네임스페이스를 형성하고 멤버 함수의 가시성(접근 범위)을 제어하기 위해서입니다. 코드 전체를 함수 스코프 내부로 감싸기 때문에 다른 라이브러리와의 이름 충돌 가능성을 크게 줄일 수 있습니다. 이러한 패턴을 바로 IIFE(Immediately Invoked Function Expression) 또는 자체 실행 익명 함수라고 합니다.
기본 문법
IIFE의 기본적인 작성 방법은 다음과 같습니다.
(function() {
// 실행될 코드
})();동작 원리
위 코드에서 첫 번째 괄호 쌍은 함수 선언을 표현식(expression)으로 변환하는 역할을 합니다.
function(){...}자바스크립트에서 함수 선언문은 그대로 두면 즉시 실행되지 않지만, 괄호로 감싸면 하나의 표현식으로 평가됩니다. 이어지는 두 번째 괄호 쌍 ()은 앞서 만들어진 함수 표현식을 실제로 호출하여 즉시 실행하도록 만듭니다.
IIFE의 장점
- 전역 오염 방지: 함수 내부에서 선언된 변수는 외부에 노출되지 않아 전역 네임스페이스를 깨끗하게 유지할 수 있습니다.
- 이름 충돌 예방: 다른 라이브러리나 스크립트와 변수·함수 이름이 겹치는 문제를 방지합니다.
- 캡슐화: 필요한 멤버만 외부에 공개하고 나머지는 숨길 수 있어 모듈 패턴 구현에 유용합니다.
이처럼 IIFE는 정의되는 순간 곧바로 한 번 실행되며, 내부 변수를 외부로부터 보호하는 자바스크립트의 대표적인 디자인 패턴입니다.