Closure Compilerがx.sa.xaのようなグローバル変数の名前を変更するという問題がありますが、そのグローバル変数が参照されるすべての関数で、コンパイラはH.sa.xaのような別の名前に変更します
HTML ページを表示すると、JavaScript TypeError: H.sa.xa is undefined が表示されます。
// Top-level namespace for all the code
var nam = nam || {};
(function($, nam) {
goog.provide('nam.jsConfig');
nam.jsConfig.cookies = {"RECENT_ITEMS": "recentitems"};
})($, nam);
(function($, nam) {
goog.provide('nam.util.cookie');
nam.util.cookie.readMyCookie = function () {
var ritems_cookie = nam.util.cookie.JSONCookie.get(nam.jsConfig.cookies['RECENT_ITEMS']);
};
})($, nam);
Closure Compiled Code:
x.sa = {};
x.sa.xa = {RECENT_ITEMS:"recentitems"};
H.a = {};
H.a.cookie = {};
H.a.Tm = function() {
var a = H.a.cookie.ja.get(H.sa.xa.RECENT_ITEMS);
};
何らかの理由で、Closure Compiler がx .sa.xa.RECENT_ITEMSではなくH .sa.xa.RECENT_ITEMS を参照しています。
コンパイラがこれを行っている理由は何ですか?