즉시 실행 함수

CODEDRAGON Development/JavaScript, jQuery, ...

반응형

 

 

 

즉시 실행 함수(immediate funtions)

함수를 정의함과 동시에 바로 실행되는 함수

익명함수를 응용한 형태

즉시 실행함수는 한번 수행 후, 다시 호출할 수 없습니다.

이런, 특성으로 최초 한 번의 실행만을 필요로 하는 초기화 코드부분에 패턴으로 사용되어 집니다.

   

 

 

즉시 실행 함수 형식

( function( ) {
코드
})( )
괄호 ( ) 로 함수리터럴을 사용한 함수 정의 부분을 감쌉니다. 그런 다음 함수가 바로 호출될 수 있게 ( ) 괄호 쌍을 추가합니다.

   

 

 

즉시 실행 함수 패턴

라이브러리 코드가 처음 로드되어 초기화할 때, 즉시 실행 함수 패턴이 많이 사용되어 집니다.

라이브러리 코드를 즉시 실행 함수 내부에 정의하게 되면 라이브러리 내의 변수들은 함수 외부에서 접근할 수 없게 됩니다. 이렇게 함으로써 이후 다른 자바스크립트 라이브러리들을 동시에 로드하더라도 라이브러리간 변수 이름 충돌 같은 문제를 방지할 수 있습니다.

   

라이브러리 즉시 실행 함수 설명
jQuery 1.11.1 (function( global, factory ) {
…………….
})(window);
window를 즉시실행함수의 인자로 넘기며 호출합니다.
Underscore 1.3.3 (function(){
var root=this;
var previousUnderscore=root._;
…………….
}).call(this);
call함수를 this인자와 함께 사용하였습니다. 실행시 this가 즉시 실행함수 내부의 this에 연결되어 root라는 함수 내부 변수에 저장되어 사용되어 집니다.
Sugar 1.2 (function(){
………………
buildObject();
buildFunction();
initializeClass(date);
})( );
특별한 인자 없이 즉시 실행함수를 호출합니다.

   

   

 

소스 코드

<html>

<head>

<meta charset="UTF-8">

<title>즉시 실행 함수</title>

<script type="text/javascript">

(function (name) {

            document.write(name + ' 실행되었습니다.');

})('즉시실행함수');

</script>

</head>

<body>

</body>

</html>

   

 

   

출력 결과

('즉시실행함수')로 즉시 실행 함수를 호출 했으며, 이 때 '즉시실행함수' 라는 문자열을 인자로 념겨 호출하였습니다. 이 값은 즉시 실행 함수의 name매개 변수에 넘겨져서 출력되게 됩니다.