IIFE는 즉시 실행 함수 표현을 의미한다.
즉시 실행하고 바로 사라진다.
사용
(function() {
console.log('IIFE');
})()
- 이름 없는 함수 식을 괄호로 래핑하면 함수식(function statement)이 아닌 표현(expression)으로 속일 수 있다.
- 그리고 다른 함수들과 마찬가지로 뒤에 ()를 붙여 호출한다.
- 이는 자바스크립트만의 특징이 아니고 개발자들이 생각해낸 패턴에 가깝다.
등장 이유
- ES6 이전에는 전역 스코프와 함수 스코프만 존재했다.
그래서 if나 for문과 같이 블록(중괄호)안에서 선언된 변수는 외부에서 마음껏 사용할 수 있었다.
- 개발 도중, 블록 안에서 선언한 변수를 외부에서 사용하지 못하게 하고 싶었다.
- 블록 스코프를 인위적으로 만들어내기 위해 IIFE와 같은 패턴이 등장했다.
- 스코프를 만들기 위해 함수를 선언하여 호출했고, 스코프만을 위한 함수였기 때문에 한 번 호출 이후 바로 사라지게 만들었다.
- 하지만 ES6 이후 블록 스코프가 등장했기 때문에 모던 자바스크립트에서는 위와 같은 용도로 IIFE 패턴을 사용하지 않는다.
- 그래도 한 번만 사용하는 함수를 만들 때는 유용하다.
- 전역 변수 제한
- 비동기 함수 실행(top-level await 구현 가능)
참조
https://developer.mozilla.org/ko/docs/Glossary/IIFE
https://www.udemy.com/course/the-complete-javascript-course/