찾다

 >  Q&A  >  본문

모듈을 가져오는 것은 import 문과 같은 줄에 모듈의 코드를 포함한다는 의미입니까?

ReferenceError: 초기화 전에 어휘 선언 'X'에 액세스할 수 없습니다. - MDN, 다음은 잘못된 가져오기의 예입니다.

a.js(입력 모듈):

으아아아

b.js

으아아아

MDN 설명:

이 예에서는 가져온 변수 a가 액세스되지만 초기화되지는 않습니다. 왜냐하면 a被访问,但是未初始化,因为a.js的评估被当前模块b.js의 평가가 현재 모듈

의 평가에 의해 차단되기 때문입니다.

a.js이 말은 모듈을 가져오는 것은 모듈의 코드를 import 문의 줄에 삽입하는 것을 의미한다는 의미로 이해됩니다. 즉, 컴파일하면

는 다음과 같이 됩니다:

으아아아 a.js이 이해가 맞나요? import - JavaScript | MDN에 이 설명이 표시되지 않습니다. 변수 승격으로 인해

의 행을 다시 정렬해도 결과가 변경되지 않으므로 이를 테스트하는 방법을 모르겠습니다. 🎜
P粉269847997P粉269847997477일 전466

모든 응답(1)나는 대답할 것이다

  • P粉165823783

    P粉1658237832023-09-17 00:53:49

    가져온 모듈의 코드는 단순히 삽입("붙여넣기")되는 것이 아니라 별도의 클로저에 존재합니다. 이것은 확실히 지나치게 단순화된 것이지만, 저는 모듈을 함수와 export语句与其return문과 비교합니다:

    으아아아 으아아아

    모듈은 서로를 가져오기 때문에 어떤 순서로도 로드할 수 없습니다. 아무 버튼이나 누르면 "최대 호출 스택 크기가 초과되었습니다" 오류가 발생합니다.

    그러나 불필요한 줄을 제거하면(지역 변수를 채운 다음 삭제하면) 작동합니다.

    회신하다
    0
  • 취소회신하다