ReferenceError: 초기화 전에 어휘 선언 'X'에 액세스할 수 없습니다. - MDN, 다음은 잘못된 가져오기의 예입니다.
a.js
(입력 모듈):
b.js
:
MDN 설명:
이 예에서는 가져온 변수
의 평가에 의해 차단되기 때문입니다.a
가 액세스되지만 초기화되지는 않습니다. 왜냐하면a
被访问,但是未初始化,因为a.js
的评估被当前模块b.js
의 평가가 현재 모듈
a.js
이 말은 모듈을 가져오는 것은 모듈의 코드를 import 문의 줄에 삽입하는 것을 의미한다는 의미로 이해됩니다. 즉, 컴파일하면
으아아아
a.js
이 이해가 맞나요? import - JavaScript | MDN에 이 설명이 표시되지 않습니다. 변수 승격으로 인해
가져온 모듈의 코드는 단순히 삽입("붙여넣기")되는 것이 아니라 별도의 클로저에 존재합니다. 이것은 확실히 지나치게 단순화된 것이지만, 저는 모듈을 함수와
export
语句与其return
문과 비교합니다:모듈은 서로를 가져오기 때문에 어떤 순서로도 로드할 수 없습니다. 아무 버튼이나 누르면 "최대 호출 스택 크기가 초과되었습니다" 오류가 발생합니다.
그러나 불필요한 줄을 제거하면(지역 변수를 채운 다음 삭제하면) 작동합니다.