코드를 함수로 감싸는 주된 목적은 네임스페이스(namespace)를 형성하고 멤버 함수의 접근 범위(가시성)를 제어하기 위해서입니다. 전체 코드를 하나의 함수 스코프 내부에 감싸면 변수와 함수가 전역 범위로 노출되지 않아, 다른 라이브러리나 외부 스크립트와의 이름 충돌을 크게 줄일 수 있습니다.
IIFE란 무엇인가?
이러한 패턴을 즉시 실행 함수 표현식(IIFE, Immediately Invoked Function Expression) 또는 자체 실행 익명 함수(Self-Executing Anonymous Function)라고 부릅니다. 정의되는 순간 곧바로 실행되며, 내부 변수들은 외부에서 접근할 수 없으므로 안전한 비공개 스코프(private scope)를 제공합니다.
기본 구문
IIFE의 기본적인 구문은 다음과 같습니다.
(function() {
// code
})();동작 원리
위 구문을 살펴보면, 첫 번째 괄호 쌍은 괄호 안의 코드를 하나의 표현식(expression)으로 변환하는 역할을 합니다.
function(){...}JavaScript에서 function 키워드로 시작하는 선언은 함수 선언문으로 해석되지만, 괄호로 감싸면 함수 표현식으로 바뀌게 됩니다. 그다음 이어지는 두 번째 괄호 쌍 ()은 앞서 만들어진 표현식의 결과인 함수를 즉시 호출하여 실행합니다.
정리하면
- 전역 스코프 오염을 방지하여 변수 충돌 위험을 줄입니다.
- 내부 변수와 함수를 캡슐화하여 외부 접근으로부터 보호합니다.
- 코드가 정의되는 즉시 한 번만 실행되므로 초기화 작업에 적합합니다.