즉시 실행 함수
- 즉시 실행 함수 패턴은 함수가 선언되자마자 실행되도록 하는 문법이다.
- 즉시 싱행 함수 함수 패턴은 다음의 부분들로 구성된다.
- 함수를 함수 표현식으로 선언한다. (함수 선언문으로는 동작하지 않는다.)
- 함수가 즉시 실행될 수 있도록 마지막에 괄호쌍으로 추가한다.
- 전체 함수를 괄호로 감싼다. (함수를 변수에 할당하지 않을 경우에만 필요하다.)
- 즉시 실행 함수는 모든 코드를 지역 유효범위로 감싸고 어떤 변수도 전역 유효범위로 새어나가지 않게 한다.
(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
'개발 > dev-patterns' 카테고리의 다른 글
자바스크립트 코딩 기법과 핵심 패턴 - 초기화 시점의 분기 (0) | 2019.08.06 |
---|---|
자바스크립트 코딩 기법과 핵심 패턴 - 즉시 객체 초기화 (0) | 2019.08.06 |
자바스크립트 코딩 기법과 핵심 패턴 - 자기 자신을 정의하는 함수 (0) | 2019.08.06 |
자바스크립트 코딩 기법과 핵심 패턴 - 콜백 패턴 (0) | 2019.08.05 |
자바스크립트 코딩 기법과 핵심 패턴 - 함수 (0) | 2019.08.05 |