首页 > 解决方案 > javascript 中的 OR 和 && 组合无法按预期工作

问题描述

我是会计人员。我已经准备了一些代码来自动化我的纳税目的所需的格式。除了这个一切都很好|| 和 && 组合。例如,在下面的代码中,我分配了一些税率和“有限公司”的文本。“有限”等,如果(例如)税率为 3% 且供应商名称中包含“有限”或“有限公司”字样。等等,那么我的表的状态列应该显示“公司”,否则显示“个人”。

function coStatus(RATE_OF_WHT, NAME) {
sString = "";
if (RATE_OF_WHT == "4" || RATE_OF_WHT == "7" || RATE_OF_WHT == "8" || RATE_OF_WHT == "14.5" || RATE_OF_WHT == "15" || RATE_OF_WHT == "2" && NAME.includes("LTD") || NAME.includes("LIMITED") || NAME.includes("Ltd") || NAME.includes("Limited")) {sString = "COMPANY"}
else if (RATE_OF_WHT == "155" || RATE_OF_WHT == "3" || RATE_OF_WHT == "6" && NAME.includes("LTD") || NAME.includes("LIMITED") || NAME.includes("Ltd") || NAME.includes("Limited")) {sString = "COMPANY"}
else {sString = "INDIVIDUAL"}
return sString;
}

问题是即使供应商的名称不包含“有限公司”一词。或“有限”等,它仍将状态显示为“公司”,而理想情况下,如果“有限”一词不存在,它应该只将状态显示为“个人”。希望你明白我的意思。需要你的帮助!

标签: javascripthtml

解决方案


问题是逻辑表达式中的分组。

在第一个 if 语句中,您需要在 AND 运算符之前和之后对 OR 运算符进行分组。否则,它会单独评估每个运算符。

如此简单的修复。只需添加几组括号来对 . 之前和之后的运算符进行分组&&

function coStatus(RATE_OF_WHT, NAME) {
    sString = "";
    if ((RATE_OF_WHT == "4" || RATE_OF_WHT == "7" || RATE_OF_WHT == "8" || RATE_OF_WHT == "14.5" || RATE_OF_WHT == "15" || RATE_OF_WHT == "2") && (NAME.includes("LTD") || NAME.includes("LIMITED") || NAME.includes("Ltd") || NAME.includes("Limited"))) {sString = "COMPANY"}
    else if ((RATE_OF_WHT == "155" || RATE_OF_WHT == "3" || RATE_OF_WHT == "6") && (NAME.includes("LTD") || NAME.includes("LIMITED") || NAME.includes("Ltd") || NAME.includes("Limited"))) {sString = "COMPANY"}
    else {sString = "INDIVIDUAL"}
    return sString;
}

这是一个微妙的变化,但请注意ifandelse if表达式中的额外括号。


推荐阅读