改进if语句链

时间:2017-11-13 13:57:42

标签: javascript

qstat -j *

这是一些错误的情况

if (firstPositionCpc && (firstPosition > 0 && firstPositionCpc <= maxCPC)) {
    var newCPC = firstPositionCpc;
} else if (topOfPageCpc && (topOfPageCpc > 0 && topOfPageCpc <= maxCPC)) {
    var newCPC = topOfPageCpc;
} else if (firstPageCpc && (firstPageCpc > 0 && firstPageCpc <= maxCPC )) {
    var newCPC = firstPageCpc;
} else {
    var newCPC = minCPC;
}

此处KeywordIdReport :197857118477 campaignName :BP 2015 QC (FR) maxCPC : 3.00 OldCPC :0.46 firstPositionCpc : -- topOfPageCpc : 0.46 firstPageCpc : 0.05 NewCPC : -- 需要是一个数字。因此,NewCPCfirstPositionCpctopOfPageCpc需要存在并且是一个数字。

firstPageCpc

此处KeywordIdReport :97483945 campaignName :BP 2015 QC (FR) maxCPC: 3.00 OldCPC :1.96 firstPositionCpc : 4.28 topOfPageCpc : 1.68 firstPageCpc : 0.85 NewCPC : 4.28 需要低于或等于NewCPC。通常情况下,maxCPC的答案应为1.68,而不是4.28

我如何修复if语句链以便修复错误的场景?

更新

现在改进之后,我怎么能说NewCPCfirstPositionCpctopOfPageCpc的类型存在并且需要是一个数字?

1 个答案:

答案 0 :(得分:1)

  

因此,firstPositionCpc,topOfPageCpc和firstPageCpc需要存在并且是一个数字。

鉴于您有3次比较,上述内容并没有多大意义,所以我的答案将依赖于您希望firstPosition > 0的假设。

所以我需要检查一个值类型是否为数字,以及该数字是否在某个范围内,因此请使用您的第一个if语句:

if (firstPositionCpc && (firstPosition > 0 && firstPositionCpc <= maxCPC)) {
    var newCPC = firstPositionCpc;
}

我会将其更改为以下内容:

if(typeof(firstPositionCpc) == 'number' && firstPositionCpc <= maxCPC && firstPosition > 0){....}

typeof()读取参数的类型并返回指示值的字符串。

请参阅此处https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof