5. circular reference

dep1.js
require('./dep2'); // {} // dep2.js가 빈객체가 아니어도 순환 참조 발생하면 빈객체로 만들어버린다.
// 노드에서 이와 같이 순환 참조가 발생하면, 참조하는 대상을 빈객체 {}로 만들어버린다.
// 이런 노드의 특성을 알면 순환참조를 사용할 수도 있다.
//  노드에서 알아서 빈객체로 만들어주니깐.
//  하지만 이를 사용하지 않는 이유는 복잡하기 때문이다. (직관적이지 않다.)
//  아까 공부했던 require.cache랑 같은 이유다.
//  해당 동작을 정확하게 알아서 써도, 직관적이지 않다.