Google 闭包编译器不会删除标有@define 注释的无法访问的代码
Google closure compiler doesn't remove unreachable code marked with @define annotation
为什么此代码在使用 SIMPLE_OPTIMIZATIONS
编译后不会生成空字符串
/**
* @define {boolean}
*/
var TEST = false;
(function() {
if (TEST) {
foo();
}
})();
相反,我得到了以下信息?
var TEST=!1;(function(){TEST&&foo()})();
无法访问 if
但闭包编译器不会删除代码。
使用 "advanced optimizations" 结果是我所期望的(空)但是 "simple optimizations" 给出了上述结果。为什么会有这种差异?在这两种情况下都不会执行代码。
编辑:
如果我删除闭包,if
块也会被删除。为什么关闭后不会发生这种情况?
我相信如果使用 "advanced optimizations"
它会被删除
为什么此代码在使用 SIMPLE_OPTIMIZATIONS
编译后不会生成空字符串/**
* @define {boolean}
*/
var TEST = false;
(function() {
if (TEST) {
foo();
}
})();
相反,我得到了以下信息?
var TEST=!1;(function(){TEST&&foo()})();
无法访问 if
但闭包编译器不会删除代码。
使用 "advanced optimizations" 结果是我所期望的(空)但是 "simple optimizations" 给出了上述结果。为什么会有这种差异?在这两种情况下都不会执行代码。
编辑:
如果我删除闭包,if
块也会被删除。为什么关闭后不会发生这种情况?
我相信如果使用 "advanced optimizations"
它会被删除