私は、Google コンパイラーを使用して最小化のためにきれいにコンパイルする JavaScript の大部分を取得しようとして、Google クロージャーを使用してきました。私は問題に遭遇しました:
goog.provide('test');
goog.provide('test2');
/**
* @constructor
*/
test = function () {
this.x = 10;
this.y = 13;
};
(function () {
/**
* @constructor
*/
test2 = function () {
this.x = 10;
this.y = 13;
};
})();
前者は大丈夫です。後者は、定数再定義エラーを生成します。
JSC_CONSTANT_REASSIGNED_VALUE_ERROR. constant test2 assigned a value more than once at /home/hbrown/tmp/closure-test/foo.js line 16 : 10
BUILD FAILED: 1 error(s), 0 warning(s)
この構造を許可するように plovr/closure コンパイラを強制する方法はありますか? 私は周りを見回しましたが、何も見つかりませんでした。
後で: さらなる点で、なぜクロージャ/plovr は test2 を定数とみなすのですか? goog.provide が呼び出されたときに、plovr/closure が test2 の名前空間を作成したことに関係していると思われます。エラーが生成されたときに処理している中間フォームを確認するとよいでしょう。