나는 모든 종류의 이름 오염을 피하기 위해 (function() {/.../})()
에 멋지게 싸인 긴 스크립트를 가지고있다. 제로 경고와 함께 100 % 입력됩니다.원래 이름 공간이 비어있는 경우 Google 클로져 컴파일러가 변수를 전역 네임 스페이스에 추가하는 이유는 무엇입니까?
Google 클로저 컴파일러는 불필요하고 위험한 느낌을주는 글로벌 네임 스페이스에 i
및 j
을 다시 정의함으로써 시작된다는 것을 알았습니다. 특히 네임 스페이스에 간섭이없는 스크립트를 컴파일하고 있기 때문에 더욱 그렇습니다. 컴파일 된 스크립트는 var i=null,j=!1;
으로 시작합니다.
나는 주위를 --output_wrapper
을 사용하여 감싸는 작업을 생각할 수는 있지만, Google이 이런 이름 공간을 오염시키는 이유를 생각할 수 없습니다.
있습니까?
[이 유사한 예이다 (https://groups.google.com/forum/#!topic/closure-compiler-discuss/ZLrYebO3DDs)의 – abc123
중복 가능성 [개명 컴파일러에서 폐쇄를 방지하는 방법 " 사실 ","거짓 "및"null "] (http://stackoverflow.com/questions/4618571/how-to-prevent-closure-compiler-from-renaming-true-false-and-null) – Alexander
아니, 나는 래퍼 트릭에 대해 이미 알고 있었다. 광산이 비어있는 동안 전 세계적인 범위를 추가 할 이유를 찾고있었습니다. 대답은 것 같습니다, 폐쇄 컴파일러는 내 범위가 비어 있는지 여부를 차가 아니며, 단지 그것을 사용할 수 있다는 가정을합니다. –