2016년 11월 4일 금요일

[javascript patterns] 스터디 10


즉시 실행 함수의 반환 값

var result = (function () {
  return '리턴';
}());
이렇게 사용하면 된다. 그럼 즉시실행하지 않는 함수와는 무슨 차이일까?
var result = function () {
  return '리턴';
};
이 문법이 더 간단하다. 차이점이라면 result(); 로 해야 값이 나온다는 점. 하지만 혹여 함수가 아니라 '리턴'이라는 값이 나올 것이라는 오해를 할 수도 있다. 그래서 '()'이걸 뒤에 붙이지 않는다면?? 값은 나오지 않는다.
var getResult = {
  message : (function () {
    var who = 'me',
        what = 'call';
    return what + ' ' + who;
  }()),
  getMsg : function () {
    return this.message;
  }
};

o.getMsg();
o.message;
이 둘을 보면서 message와 getMsg의 사용법의 차이를 생각해보자.
즉시 실행 함수 패턴은 폭넓게 사용된다. 전역 변수를 남기지 않고 많은 작업을 할 수 있게 해줄 것이다. 서적에 의하면 이 패턴은 북마클릿(bookmarklet)에서 많이 쓰인단다. 어떤 페이지에서도 실행되고 전역 네임스페이스를 깨끗하게 유지하는 것이 중요하기 때문이란다.
개별 기능을 독자적인 모듈로 감쌀 때도 유용하다.
개별 기능을 독자적인 모듈로 감쌀 수도 있따. 이걸로 기능을 단위별로 정의하는 거다. 이것을 module1이라고 하자
// module1.js에서 정의한 module1
(function () {
  // 모든 module1 코드 ....
}());
이 템플릿을 따라 또 다른 모듈로 코딩할 수 있다. 긜고 실제 사이트에 코드를 올릴 때, 어떤 기능이 사용도리 준비가 되었는지 결정하고 빌드 스크립트를 사용해 해당하는 파일들을 병합하면 된다.

댓글 없음:

댓글 쓰기