모듈


내부 모듈과 외부 모듈


<aside> 💡 내부 모듈은 네임스페이스를 의미하며, 외부 모듈은 export로 선언해서 외부에 공개된 모듈

</aside>

Untitled

네임스페이스 (내부 모듈)


<aside> 💡 네임스페이스의 역할과 기능은 module과 같다고 보면 된다.

</aside>

네임스페이스는 하나의 독립된 이름 공간을 여러 파일에 걸쳐 공유할 수 있다. 내부 모듈은 자바스크립트 ES6으로 컴파일될 때 즉시 실행 함수로 변환된다. 즉시 실행 함수 내부는 전역 스코프와 분리된 이름 공간이다.

아래 컴파일 후 코드에서 즉시실행 함수로 보낸 파라미터 (Hello || (Hello = {}))는 모듈이 있으면 전달하고, 없으면 Hello{}로 초기화해서 전달한다. 이를 모듈 패턴에선 느슨한 확장이라고 부른다. 만약 Hello만 파라미터로 전달한 경우라면 단단한 확장이라고 부른다.