즉시 실행 함수 표현(IIFE)는 Immediately Invoked Function Expression으로 정의되자마자 즉시 실행되는 자바스크립트의 함수를 말합니다.
(function() {
var aName = "Barry";
})(매개변수);
이렇게 함수를 괄호 안에 넣어 실행을 시키는 것입니다.
익명함수를 소괄호로 감싼 후 소괄호 뒤에 소괄호를 열고 닫습니다. 아래와 같이 함수의 이름을 따로 만들지 않아도 소괄호 두개를 통해 함수를 바로 실행시킬 수 있습니다. (함수)()
(function () {
console.log(a * 2)
})();
또한 아래와 같이 소괄호로 익명함수를 감싸고 뒷 소괄호 앞에 소괄호를 열고 닫아 작성할 수도 있습니다. (함수())
(function () {
console.log(a * 2)
}());
※주의점
아래와 같이 자바스크립트 엔진이 즉시 실행함수가 실행되는 부분과 일반 함수를 명확하게 구분짖지 못하기 때문에 반드시;
를 통해 구분지어줘야합니다.const a = 7 function double() { console.log(a * 2) } double(); //반드시 ;를 붙여구분 (function () { console.log(a * 2) })();
즉시실행함수는 공간을 완전히 분리할 수 있기 때문에 ()안에서는 명확하게 새로운 스코프를 만들어낼 수 있기 때문에 유용합니다. 일종의 블록 스코프를 흉내내는 새로운 스코프를 만들고 있다고 생각하면 이해하기 쉽겠습니다.
단, 즉시실행 함수를 사용할 때는 반드시 앞 또는 뒤에 ;를 붙여줘야 한다는 주의점이 있습니다.
(;를 사용하지 않고 즉시실행 함수를 연달아 실행하는 경우 함수가 붙어버리게 됩니다. 붙어버리는 경우 실행이 되지 않습니다.)
스코프에 대한 걱정이 있다면 즉시실행함수를 사용해보는 것도 좋습니다.
(function(num) {
var privaeData='secret'
})(1)
즉시실행함수는 향후 배우게 될 Closure이라는 함수 사용 기법에 비슷하게 작동하기 때문에 지금 이해를 잘 해놓는다면 closure의 이해해도 많은 도움을 받을 수 있을 것입니다.