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

미해결질문
블루윤 프로필

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

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

어느 패턴은 js 파일 맨 밑에

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

// 함수부분은 생략.

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

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

(제가 생각하기에는)

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

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

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

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

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

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

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

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

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

강의 항상 잘보고있어요

정재남 프로필
정재남 4달 전

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

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

정도가 있겠네요.

블루윤 프로필
블루윤 4달 전

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

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 함수 밖에서는 컨트롤 할 수 없으니

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

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

정재남 프로필
정재남 4달 전

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

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

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 등으로 호출해서 사용.

지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스