我想讓google閉包編譯器從我的javascript中刪除一些日誌函數調用而沒有任何成功。下面是我的測試代碼,再現我所看到的Closure編譯器不能從javascript中刪除死鎖函數
/** @define {boolean} */
var ENABLE_LOGGING = true;
(function() {
function obj(name) {
this.name = name;
}
obj.prototype = {
log: ENABLE_LOGGING ?
function(msg) { console.log(this.name + ': ' + msg); } :
function(msg) {}
};
var A = new obj('bob');
var B = new obj('tom');
A.log('I am an object!');
B.log('I am another object!');
})();
當我編譯這與java -jar ./compiler.jar --define ENABLE_LOGGING=false --compilation_level ADVANCED_OPTIMIZATIONS --js test.js
,它產生這樣的輸出(漂亮打印的清晰度):
(function() {
function a(a) {
this.name = a;
}
a.prototype = {log:function() {
}};
var b = new a("tom");
(new a("bob")).log("I am an object!");
b.log("I am another object!");
})();
什麼是正確的方法獲取閉包編譯器以忽略日誌代碼?在這裏,它正在打電話給一個什麼都不做的功能。
的可能重複[排除調試過程中微小的JavaScript代碼(http://stackoverflow.com/questions/2934509/exclude-debug-javascript-code-during -minification) –