Immediately Invoked Function Expression (IIFE)

// function expression
function increment(i) {
  return i + 1;
}

// invoke function
increment(1);

// the code above can be written to IIFE:
(function(i) {
  return i + 1;
})(i);

Immediately Invoked Function Expression (IIFE)는 말그대로 즉시 실행되는 함수이다. 함수를 정의하는 함수 표현 블럭과 그 함수를 실행 (invoke)하는 코드는 보통 다른 곳에 위치한다.

그 와 달리 IIFE는 함수를 정의하자마자 그 함수를 실행하는 self invoking function express이기도 하다.

재활용 할 필요가 없기 때문에 함수명이 없는 것 (annonymous function) 또한 특이사항이다.

var counter = (function() {
  var i = 0;
  
  return {
    get: function() {
      return i;
    },
    set: function(val) {
      i = val;
    },
    increment: function() {
      i++;
    }
  }
})();

console.log(counter.get()); // 0
counter.set(5); // 5
counter.increment(); 
counter.get(); // 6

클로저의 형태로 위와 같이 getter, setter와 함께 사용할 수도 있다.