У меня есть длинный сценарий, красиво завернутый в (function() {/.../})()
, чтобы избежать загрязнения всех видов. Он на 100% печатается с нулевым предупреждением.Почему компилятор Google Closure добавляет переменную в глобальное пространство имен, когда исходное пространство имен пусто?
Я узнал, что компилятор Google Closure начинается с переопределения i
и j
в глобальном пространстве имен, которое кажется ненужным и опасным, особенно если я компилирую скрипт, который имеет нулевые помехи в пространстве имен. (скомпилированный скрипт начинается с var i=null,j=!1;
, по соображениям компактности, я считаю).
Я могу придумать, как обернуть его, используя --output_wrapper
, но я не могу придумать, почему Google загрязнит пространство имен, подобное этому.
Есть ли какие-либо?
[Это похожий пример] (https://groups.google.com/forum/#!topic/closure-compiler-discuss/ZLrYebO3DDs) – abc123
возможно дубликат [Как предотвратить Closure Compiler от переименования " true "," false "и" null "] (http://stackoverflow.com/questions/4618571/how-to-prevent-closure-compiler-from-renaming-true-false-and-null) – Alexander
Не совсем, Я уже знал об обертке, о которой я упоминаю в своем посте. Я искал причину добавления глобальной области, в то время как моя была пустой. Ответ, похоже, заключается в том, что компилятор Closure не поддерживает ли мой объем пустым или нет, он просто делает предположение, что он может его использовать. –