Google闭包编译器不会移除带有@define注释的不可访问代码

Google closure compiler doesn't remove unreachable code marked with @define annotation

本文关键字:注释 @define 访问 代码 编译器 闭包 Google      更新时间:2023-09-26

为什么这段代码在使用SIMPLE_OPTIMIZATIONS编译后没有产生空字符串

/**
 * @define {boolean}
 */
var TEST = false;
(function() {
    if (TEST) {
        foo();
    }
})();

,而我得到了下面的?

var TEST=!1;(function(){TEST&&foo()})();

if不可访问,但闭包编译器不会删除该代码。
"高级优化"的结果是我所期望的(空),但"简单优化"给出了上述结果。为什么会有这种差异?在这两种情况下,代码都不会被执行。

编辑:
如果我移除闭包,if块也会被移除。为什么闭包不会发生这种情况?

我相信如果使用"高级优化"

它将被删除。