JavaScript에서 (function() { } )() 구문은 즉시 실행 함수 표현식(IIFE, Immediately Invoked Function Expression)이라고 부릅니다. 이름 그대로 함수가 정의(생성)되는 순간 곧바로 실행되는 특수한 형태의 함수입니다.
기본 문법
IIFE의 기본적인 작성 방법은 다음과 같습니다.
(function() {
// 실행될 코드
})();동작 원리 이해하기
1. 첫 번째 괄호 쌍: 함수를 표현식으로 변환
함수 선언 전체를 괄호로 감싸면, JavaScript 엔진은 이를 일반적인 함수 선언이 아닌 함수 표현식으로 해석합니다.
function(){...}즉, 다음과 같은 구조가 되는 것입니다.
(function(){...})2. 두 번째 괄호 쌍: 함수 호출
그다음에 오는 괄호 쌍, 즉 두 번째 괄호는 앞서 만든 표현식이 반환한 함수를 실제로 호출하는 역할을 합니다. 이 덕분에 별도의 호출 코드 없이도 정의와 동시에 함수가 즉시 실행됩니다.
IIFE를 사용하는 이유
IIFE는 주로 다음과 같은 목적으로 활용됩니다.
- 전역 스코프 오염 방지: 함수 내부에서 선언된 변수는 외부에서 접근할 수 없으므로, 전역 변수 충돌을 예방할 수 있습니다.
- 초기화 코드 즉시 실행: 페이지 로드 시 한 번만 실행하면 되는 설정 코드를 깔끔하게 처리할 수 있습니다.
- 비공개 상태 유지: 클로저와 함께 사용하면 외부에 노출되지 않는 비공개 데이터를 만들 수 있습니다.
(function() {
var message = '안녕하세요!';
console.log(message); // 정의되자마자 즉시 출력됨
})();이처럼 IIFE는 정의와 실행을 하나의 구문으로 처리하는 간결하고 강력한 패턴으로, 모듈 패턴의 기반이 되는 중요한 개념입니다.