cnode 포럼에서 이 질문을 봤습니다:
으아악현재 Node.js는 VM 인터페이스를 노출하므로 프런트엔드 js와는 상당히 다른 새로운 js 컨텍스트를 직접 생성할 수 있습니다. 샌드박스는 새로운 컨텍스트를 생성함으로써 컨텍스트 오염을 피할 수 있습니다.
새로운 컨텍스트를 통해 오염을 피할 수 있는데 왜 Node.js는 범위 오염을 피하기 위해 각 .js 파일에 독립적인 컨텍스트를 제공하지 않나요?
인용:
https://github.com/ElemeFE/no...
Node가 각 js 파일에 독립적인 컨텍스트를 제공하지 않는다고 누가 말했습니까... Node의 각 .js 파일은 모듈로서 실제로 함수로 캡슐화되어 있습니다. 자세한 내용은 알아야 할 Node.js 모듈을 참조하세요.
추가: 귀하의 질문을 오해했습니다. 전역 변수의 의미는 "전역"입니다. 노드에는 이것이 있으며 C/C++도 정적 멤버를 통해 "전역"을 구현할 수 있습니다. 큰 그림 자체가 문제가 되는 것은 아닙니다. 문제는 큰 그림이 정말로 필요한가 하는 것입니다.
모든
js
文件有独立的module
,仔细看过node
官网的module
部分就能知道,每个模块也就是文件都有自己的全局变量module
,从而能通过module.exports
进行模块导出,每个文件的内容都存在一个闭包中,所以说,所谓的单独上下文其实是有的,看你怎么定义这个单独上下文,如果没有的话,CommonJS
的module
메커니즘은 더 이상 존재하지 않습니다.문제는 실제로 약간 혼란스럽습니다. 실제로 Node는 각 js 파일에 독립적인 컨텍스트를 제공하지만 이는 전역 범위 오염을 피할 수 없습니다.
물론, 일시적인 부주의로 인한 지구 오염을 방지하기 위해 엄격 모드를 사용할 수도 있습니다.
이 질문에 아무도 답변하지 않은 것 같습니다. 직접 댓글을 달아주세요.
이 질문에 거의 답할 수 있는 답변을 Zhihu에서 찾았습니다. 거의 같은 느낌이에요모듈은 상위버전과 하위버전만 있는거 아닌가요?