즉시 실행 함수


  • 즉시 실행 함수 패턴은 함수가 선언되자마자 실행되도록 하는 문법이다.
  • 즉시 싱행 함수 함수 패턴은 다음의 부분들로 구성된다.
  • 함수를 함수 표현식으로 선언한다. (함수 선언문으로는 동작하지 않는다.)
  • 함수가 즉시 실행될 수 있도록 마지막에 괄호쌍으로 추가한다.
  • 전체 함수를 괄호로 감싼다. (함수를 변수에 할당하지 않을 경우에만 필요하다.)
  • 즉시 실행 함수는 모든 코드를 지역 유효범위로 감싸고 어떤 변수도 전역 유효범위로 새어나가지 않게 한다.

(function(){
var days = ['sun', 'mon', 'tue', 'wed', 'the', 'fri', 'sat'],
today = new Date();
msg = 'today is ' + days[today.getDay()] + ', ' + today.getDate();

console.log(msg)

}()) // 'today is tue, 6'



즉시 실행 함수의 매개변수


즉시 실행 함수에 인자를 전달할 수도 있다.

// 출력결과:
// 'i met joe black on Tue Aug 06 2019 14:59:48 GMT+0900 (대한민국 표준시)'
(function(who, when){

console.log('i met ' + who + ' on ' + when);

}('joe black', new Date()));


전역 객체를 global로 참조가 가능하다.


(function(global){

// 전역 객체를 'global' 로 참조
}(this));



즉시 실행 함수의 반환 값


다른 함수와 비슷하게 즉시 실행 함수도 값을 반환할 수 있고 반환된 값은 변수에 할당될 수 있다.

var result1 = (function(){
return 1 + 1;
}());

// 괄호를 생략해서 같은 동작을 구현할 수 있다.
var result2 = function(){
return 2 + 2;
}();

// 즉시실행 함수에서 미리 계산하여 클로저에 저장해둔 res라는 값을 반환
var getResult = (function(){
var res = 2+2;
return function(){
return res;
}
}())

console.log(getResult());


즉시 실행 함수는 객체 프로퍼티를 정의할 때에도 사용할 수 있다.


var o = {
message : (function(){
var who = 'me',
what = 'call';
return what + ' ' + who;
}()),
getMsg : function(){
return this.message;
}
};

// 사용방법
o.getMsg(); // call me
o.message; // call me


+ Recent posts