Skip to content

0906

순환 참조란

  • 자바스크립트 엔진은 코드를 실행하기 전에
  1. 파싱: 코드를 토큰으로 나누고 AST를 생성
  2. 컴파일: AST를 바이트 코드나 최적화 된 기계어(JIT)로 변환
  3. 실행: 위에서 컴파일 된 코드를 실제로 실행
  • 과정을 거친다.

  • 순환 참조란, 두 가지 이상의 객체/모듈함수가 서로를 직/간접적으로 참조하는 현상을 의미한다.

  • 해당 현상이 발생하면 엔진이 코드를 실행하는 과정에서

  1. 초기화 순서를 결정하기가 어렵고
  2. 함수 호출이 무한 반복될 수 있다.
  • 초기화 순서를 결정하기가 어려워지면 발생하는 문제점
    • 모듈이 완전히 로드되기 전에 다른 모듈이 그 값을 참조하려 하면 undefined가 발생할 수 있고, 에러가 발생할 수 있다.
  • 함수 호출이 무한 반복되면 발생하는 문제점
    • 가비지 컬렉션이 있긴 하지만, 자바스크립트는 콜스택에 실행 코드가 쌓이기 때문에 이가 무한 반복되면 스택 오버플로가 발생하여 프로그램이 중단되거나 브라우저 프로세스가 크래시 될 수 있다.

package.json 속성