인프런 커뮤니티 질문&답변

블루윤님의 프로필 이미지
블루윤

작성한 질문수

코어 자바스크립트

(예전자료 - 삭제) 콜백함수

init() 을 쓰는 이유 질문드려요!

작성

·

20K

1

클로저 강의를 듣다보니 문득 궁금한것이 생겼는데요.

자바스크립트에서는 다른 언어들(c나 자바) 처럼 init 이라는 개념자체가 없다고 알고있습니다.

어느 패턴은 js 파일 맨 밑에

var test = document.getElementById("test");

// 함수부분은 생략.

function init() {
    testFunc();
    test.addEventListener("click", test2Func);
}
init();

위와 같이 init 함수를 임의로 만들어놓드라구요.

(제가 생각하기에는)

그 안에다 최초 실행되는 이벤트들을 

보기 좋게 모아둔 함수 인것 같은데요.

구글에 검색해보았을때는 키워드가 잘못된건지,

위 코드와 같은 패턴에 대한 정보를 찾지 못하겠습니다.ㅜ

대강... 조각들을 맞춰보면

변수들을 계속해서 유지? 사용하기 위한??

초기화...?? 를 위한 함수 라는데

그게 정확히 있고 없고에 차이를 모르겠습니다.

답변 주시면 감사하겠습니다!

강의 항상 잘보고있어요

답변 4

2

정재남님의 프로필 이미지
정재남
지식공유자

보통은 전역변수를 아예 선언하지 않거나, 최소한도로만 선언하는 방식으로 합니다.

다음 예제와 함께 '네임스페이스 패턴'을 검색해보시기 바랍니다.

var APP = (function() {
    function handleClick() { ... }
    var test = document.getElementById("test");
    var BASE_COLOR = "rgb(52, 73, 94)";

    test.style.color = BASE_COLOR;
    test.addEventListener("click", handleClick);

    // 초기화 이후에도 계속 사용해야 하는 변수들만 아래 객체에 담아 전달.
   return {
      test: test,
      BASE_COLOR: BASE_COLOR
    }
})();

// 이후 APP.test / APP.BASE_COLOR 등으로 호출해서 사용.

0

모듈화와 관계있다고 생각합니다.

초기화 할 변수를 함수에 넣고 함수를 호출하면 간단하게 초기화가 가능합니다.

간단한 코드인 경우에는 큰 차이가 없지만 반복적으로 호출하는 경우나 다른 곳에서 사용하게 되는 경우에는 간단하게 호출하거나 가져다 쓸 수 있을것 같습니다.

0

블루윤님의 프로필 이미지
블루윤
질문자

제 머리의 한계인가봅니다... 확 와닿지가 않네요.

2) 전역객체를 보호

-> 요 의미가 뭘까요?

var test = document.getElementById("test");

var BASE_COLOR = "rgb(52, 73, 94)";

// handleClick 함수 생략

function init() {
    test.style.color = BASE_COLOR;
    test.addEventListener("click", handleClick);
}
init();

init 안에다 넣든 밖으로 빼든 가독성 차이 말고는 떠오르지가 않네요.

init 함수 내부에 넣으면... 지역변수(스코프가 init 지역으로 한정됨) 개념으로 되어

init 함수 밖에서는 컨트롤 할 수 없으니

-> 요게 곧 보호받는다는걸까요???

'전역객체를 보호' 한다는 의미는 아닌거 같은데 말이죠..

0

정재남님의 프로필 이미지
정재남
지식공유자

패턴이라고 할 건 아닌 것 같습니다.  init함수를 만드는 이유를 굳이 찾자면,

1) 가독성 측면 2) 전역객체를 보호

정도가 있겠네요.

블루윤님의 프로필 이미지
블루윤

작성한 질문수

질문하기