작성
·
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