当我通过webpack UglifyJs插件运行以下代码时:
...
console.log('url: '+this.url);
let url = this.url;
let tags = []
while (true) {
let i = url.indexOf('?tag=');
if (i < 0) break;
url = url.substring(i+5);
let j = url.indexOf('?tag=');
let tag = j < 0 ? url : url.substring(0,j);
tags.push(tag);
}
if (tags.length === 0) { // UglifyJs reports "condition always false"
...
UglifyJs报告&#39;条件总是错误的&#39;即标签数组永远不会为空,并且请继续删除后续代码。
跆拳道?显然,如果网址不包含&#39;?tag =&#39;例如,tags数组将为空。如果我重构以上内容:
function getTags(url)
let tags = []
while (true) {
let i = url.indexOf('?tag=');
if (i < 0) break;
url = url.substring(i+5);
let j = url.indexOf('?tag=');
let tag = j < 0 ? url : url.substring(0,j);
tags.push(tag);
}
if (tags.length === 0) { // no warning here from uglifyJs - why??
console.log("no tags");
}
return tags;
}
....
console.log('url: '+this.url);
let url = this.url;
let tags = getTags(url);
if (tags.length === 0) { // no problems now
它现在报告没有问题。
我真的希望有人可以解释一下UglifyJs在这里如何以及为何真正正确,因为否则它会在我的代码中引入错误并且必须立即删除。
提前致谢。