현재 인스턴스 변수를 공유하고 싶습니다. 예를 들어, 데이터베이스에 연결하려면 데이터베이스가 main.js에서 인스턴스화된 후 해당 데이터베이스를 사용하려는 다른 모듈이 이를 다시 인스턴스화해야 합니다.
예를 들어 main.js
으아악user.js
으아악이때 redisApi 변수가 정의되지 않았다는 오류 메시지가 보고됩니다!
하지만 eval을 사용하여 변수를 초기화한 후에는 달라졌습니다
main.js
으아악이때 다른 모듈은 redisApi 변수를 공유할 수 있습니다.
평가가 왜 이런 일을 할 수 있는지, 누가 설명할 수 있나요?
迷茫2017-05-31 10:40:28
여기서 Node.js의 모듈이 로드되는 방식을 이해해야 합니다.
브라우저와 마찬가지로 Node.js의 실행 환경에는 DOM 창 개체와 유사한 전역 개체가 있습니다.
마찬가지로,
코드 설명을 직접 살펴보세요:
따라서 코드와 비교하면 이를 이해할 수 있습니다. 실제로 적용되는 것은 redisApi = new RedisApi();
,eval (
`let redisApi;`);
에 의해 선언된 변수가 다른 독립적인 범위에 있고 실제로 액세스할 수 없다는 것입니다.
黄舟2017-05-31 10:40:28
Eval 코드는 내장 eval 함수에 제공되는 소스 텍스트입니다. 보다 정확하게는 내장 eval 함수에 대한 매개변수가 문자열인 경우 특정 호출에 대한 ECMAScript 프로그램으로 처리됩니다. eval은 해당 프로그램의 전역 코드 부분입니다.
이것은 es6의 원본 텍스트를 인용한 것입니다. 이것이 사양이 설정된 방식이므로 결과가 나오지만 일반적으로 이런 방식으로 플레이하는 것은 권장되지 않습니다.