IIFE(Immediately Invoked Function Expressions : "iffy"라고 발음)는 즉시 호출 함수 표현식의 줄임말이다.
기본적인 형태는 다음과 같다.
(function () {
// Do fun stuff
})()
이것은 즉시 호출되는 익명 함수 표현식이다.
foo(); // success!
function foo() {
alert('foo');
}
foo(); // "foo" is not defined.
var foo = function() {
alert('foo');
};
alert(foo); // "foo" is not defined.
(function foo () {});
alert(foo); // "foo" is not defined.
IIFE를 설명하기 위한 function declaration과 function expression의 설명은 이 정도로 끝내겠다.
// 괄호 사용 안함
x = function () {};
// 괄호 사용
(x = function () {});
// 변수 x에는 함수의 값이 할당됩니다. 괄호로 둘러쌓인 함수는 익명의 함수 표현식이 됩니다.
(showName = function (name) {
console.log(name || "No Name")
}) (); // No Name
showName("Rich"); // Rich
showName(); // No Name
// All the code is wrapped in the IIFE
(function () {
var firstName = “Richard”;
function init () {
doStuff (firstName);
// code to start the application
}
function doStuff () {
// Do stuff here
}
function doMoreStuff () {
// Do more stuff here
}
// Start the application
init ();
}) ();
필요한 경우 마지막 괄호 안에 외부 객체나 변수를 넣어 익명의 함수에 전달할 수도 있다.