선언적 가져 오기/내보내기에는 순환 종속성 문제가 없습니다. :-)
이 솔루션은 import
변수에 값을 가져 오지 않는다는 것입니다,하지만 변수 보낸 변수에 참조 수 있다고하지만 귀하의 경우에는, 원은 최소한의 길이입니다. 가변 변수의 예를 보려면 here을, 정확한 용어는 this question을보십시오.
모듈 네임 스페이스 개체의 경우도 마찬가지입니다. 속성은 실제 내 보낸 변수를 확인하는 getter입니다. 모듈로드 및 평가 될 때
그래서, 다음 단계가 발생합니다
- 소스 정적 모듈 범위가 생성 종속성 그래프
- 을 구축
export
및 import
선언에 대한 분석
- 모듈의 유일한 의존성은 이미 초기화되어 있으므로 초기화 할 때까지 기다릴 필요가 없습니다.
fooModule
변수가 만들어지고 인스턴스화됩니다. 내 보낸 모듈 이름을 가진 객체이며, ["logFoo"]
으로 알려져 있습니다. fooModule.logFoo
속성은 모듈 범위의 변수 logFoo
으로 평가되는 게터가됩니다 (export {A as B}
을 사용한 경우 fooModule.B
은 A
으로 해결되지만 두 경우 모두 동일한 이름 임).
- 모듈 범위의 변수 선언
이 경우
logFoo
에서 변수를 생성하고 함수 선언은 모듈의 코드가 실행될
- (즉
logFoo
할당됩니다 기능) 초기화된다 를 (귀하의 경우 아무 일도 발생하지 않습니다)
logFoo
을 가져 오는 모듈에서 호출하면 fooModule
은 logFoo
을 포함하는 네임 스페이스를 참조합니다. 마법 없음 :-)
무엇을하고 싶은가요? – anshuVersatile
수입품은 필수적이지 않으며 해결책과 실행은 분리되어 있습니다. 가져 오기가 먼저 구문 분석되고 해결됩니다. 코드가 실행될 때까지 모든 바인딩이 이미 해결됩니다. – Joseph
가장 좋은 방법은 이것을하지 않는 것입니다. –