为什么Uglifyjs报告"条件总是错误"这里?

时间:2016-01-21 20:55:33

标签: webpack uglifyjs

当我通过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在这里如何以及为何真正正确,因为否则它会在我的代码中引入错误并且必须立即删除。

提前致谢。

0 个答案:

没有答案