2016년 10월 30일 일요일

[javascript patterns] 스터디 09


즉시 실행 함수

즉시 실행 함수 패턴: 함수 선언 직후 바로 실행되는 문법.
(function() {
  alert('바로 실행');
})();
이 패턴은 함수 표현식을 생성한 직후 실행시킨다. 일반 함수에 두개의 괄호가 붙었다. 붙은 위치를 보고 '아! 저렇게 하면 즉시 실행되는 구나!' 하고 느끼기 바란다. 사실 비슷하지만 다르게도 즉시실행을 할 수 있다.
(function() {
  alert('바로 실행');
}());
별 차이는 없다. 하지만 JSLint는 이놈을 더 좋아한다고 한다. 이것을 언제 쓸까? 페이지 로드가 완료 되었을 때, 기본적으로 이벤트 핸들러를 연결하는 등의 초기 설정 작업을 한다. 이런 것들을 사용할 때 이름을 하나하나 전역에 붙였다가는 더러워질 수 있을 것이다.(재사용할 것이 아니기 때문)
(function () {
  var days = ['일요일', '월요일', '화요일', '수요일', '목요일', '불금세일', '토요일'],
      today = new Date(),
      msg = 'Today is ' + days[today.getDay()] + [, ] + today.getDate();
  alert(msg);
}()); 

즉시 실행 함수의 매개변수

(function (who, when) {
  alert(when + ' ' + who + '와 약속이 있습니다.');
}('아무개씨', new Date()));
일반적으로 전역 객체가 즉시 실행 함수의 인자로 전달된다. 즉 window를 쓰지 않고 전역 객체에 접근할 수 있다. 이런 방법으로 브라우저 외에서도 코드를 사용할 수 있다. 잘보라
(function (global) {
  // 전역 객체르 'global'로 참조 하는데 브라우저 상에서는 window였지만 다른 곳에서는 아닐 수도 있는 법
  console.log(global); // Window 객체가 뜰 것이다.
}(this));
다음 글에 이어서 하도록 하자.

댓글 없음:

댓글 쓰기