通过将表达式移动到' if '条件子句,uglifyjs获得了什么?
What does uglifyjs gain by moving expressions to the `if` condition clause?
以下代码
console.log("foo");
if (window.x !== window.y) {
const x = "x";
console.log(x);
}
使用uglifyjs将缩小为
if(console.log("foo"),window.x!==window.y){const x="x";console.log(x)}
可以看出它并不比
更直接console.log("foo");if(window.x!==window.y){const x="x";console.log(x)}
那么他们通过移动它得到了什么?这是一些棘手的引擎特定的优化还是有一个原因,我不能看到?
正如@GOTO指出的那样,第二个变体可能是相同的长度,gzip后会更长:
$ echo 'if(console.log("foo"),window.x!==window.y){const x="x";console.log(x)}' | gzip | wc --bytes
74
$ echo 'console.log("foo");if(window.x!==window.y){const x="x";console.log(x)}' | gzip | wc --bytes
76
有人在他们的自述文件中给我指了一个地方,在那里他们做了说明
块中的连续语句合并成一个序列;在许多情况下,这使得块只剩下一条语句,因此我们可以删除块括号。
所以这里不是这样,但是当你有像
这样的东西时,它会节省2个字符if (<expr>) {
console.log("foo");
if (window.x !== window.y) {
const x = "x";
console.log(x);
}
}
相关文章:
- Webpack UglifyJS仍在发出警告消息
- Knockout.js中带有if:子句的嵌套循环
- 如何使用uglifyjs/uglifyjs2解析walk和eval javascript表达式
- UglifyJs用于JSON缩小的JavaScript API
- Javascript:用if语句运行while循环,用子句随机生成内容
- if 子句在 JavaScript 中限定工作流
- UglifyJS更改了代码bahaviour
- 尝试在 if 子句中将变量从 js 发布到 php
- 在查询字符串中查找 where 子句
- 将where子句与javascript变量一起使用
- 运行Promise.all()中的When-is-then-then子句
- if子句中的赋值运算符赋值并执行检查
- else-if子句未按预期工作
- checkbox.attr(“checked”),就像句子子句一样
- 条件捕获子句-浏览器支持
- uglifyjs是一个javascript意外的令牌错误
- php文件中的uglifyjs javascript
- 动态创建SQLite子句内参数
- 如何使用AngularJS而不是在查询子句中根据两列的差异对表进行排序
- 通过将表达式移动到' if '条件子句,uglifyjs获得了什么?