클로저를 통한 JavaScript 모듈에서 변수와 함수 내보내기
때로는 모듈의 일부 변수와 함수를 외부에서 사용할 수 있도록 만들어야 할 때가 있습니다. 어떻게 하는지 살펴보겠습니다. 다음과 같은 모듈이 있다고 가정해 보겠습니다:
;(function() {
let str = '모듈 변수';
function func() {
alert('모듈 함수');
}
})();
이제 우리의 함수 func를 내보내겠습니다.
이를 위해 브라우저 내장 객체 window의 속성으로 할당하겠습니다:
;(function() {
let str = '모듈 변수';
function func() {
alert('모듈 함수');
}
window.func = func;
})();
이제 모듈 외부에서 우리의 함수를 호출할 수 있습니다:
;(function() {
let str = '모듈 변수';
function func() {
alert('모듈 함수');
}
window.func = func;
})();
window.func(); // '모듈 함수'를 출력합니다
이 경우 함수를 window 객체의 속성으로 호출할 필요는 없습니다:
;(function() {
let str = '모듈 변수';
function func() {
alert('모듈 함수');
}
window.func = func;
})();
func(); // '모듈 함수'를 출력합니다
다음 모듈이 주어졌습니다:
;(function() {
let str1 = '모듈 변수';
let str2 = '모듈 변수';
let str3 = '모듈 변수';
function func1() {
alert('모듈 함수');
}
function func2() {
alert('모듈 함수');
}
function func3() {
alert('모듈 함수');
}
})();
변수 중 하나와 아무 두 함수를 외부로 내보내세요.