javascript - 闭包编译器和奇怪的前置代码

标签 javascript node.js google-closure-compiler

我经常使用在线闭包编译器 ( https://closure-compiler.appspot.com/home ) 来压缩我的 JS 代码。现在我试图通过“外部工具”将这个过程集成到 PhpStorm 中,但我得到了非常奇怪的结果。一切正常,除了一件事 - 如果我使用 Set 变量,一些奇怪的代码会在我之前打印出来。例如:
原代码:

function a(text) { alert(text); }
$(document).ready(function(){
    let mySet = new Set();
    $("#myButton").click(function(){
       a("CLICKED");
       mySet.clear();
       for(let i=0;i<10;i++) mySet.add(i);
    });
}); 

通过网络工具缩小:

function a(b){alert(b)}$(document).ready(function(){var b=new Set;$("#myButton").click(function(){a("CLICKED");b.clear();for(var c=0;10>c;c++)b.add(c)})});  

通过命令行缩小(java -jar compiler.jar --charset UTF-8 --js closureTest.js --js_output_file closureTest.min.js): https://pastebin.com/QqGXc6H7


没有设置变量:

原创:

function a(text) { alert(text); }
$(document).ready(function(){
    let mySet = [];
    $("#myButton").click(function(){
       a("CLICKED");
       mySet.length = 0;
       for(let i=0;i<10;i++) mySet.push(i);
    });
});

通过网络工具缩小:

function a(b){alert(b)}$(document).ready(function(){var b=[];$("#myButton").click(function(){a("CLICKED");for(var c=b.length=0;10>c;c++)b.push(c)})});

通过命令行压缩:

function a(b){alert(b)}$(document).ready(function(){var b=[];$("#myButton").click(function(){a("CLICKED");for(var c=b.length=0;10>c;c++)b.push(c)})});

如您所见,WEB-tool 编译工作正常,但是命令行编译有什么问题?

最佳答案

好吧,我找到了解决方案(感谢 shiftweave )。
它需要参数 --rewrite_polyfills false 才能正常工作。

关于javascript - 闭包编译器和奇怪的前置代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50849537/

相关文章:

javascript - FireFox 和 Google Chrome 中不同的 JavaScript 对象文字行为?

javascript - Node.js:为 exec() 清理不受信任的用户输入

javascript - 删除 discord.js 排行榜中的所有从右到左的字符

javascript - 一键关闭windows工具编译文件夹内所有js文件

javascript - Google Closure Compiler 用于变量参数的 @param 注释

JavaScript - 重复函数,列出一定范围内的 'n' 个随机数,不重复

javascript - 大型 SVG/Raphael 圆在动画时会变形

javascript - 获取CSS类属性数据绑定(bind)以附加而不是替换

node.js - 设置express js静态文件并将它们包含在模板文件中

javascript - 由于名称属性,闭包编译器重命名问题