Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仍然在执行IF语句,即使值与我设置的值不匹配_Javascript_Logical Operators - Fatal编程技术网

Javascript 仍然在执行IF语句,即使值与我设置的值不匹配

Javascript 仍然在执行IF语句,即使值与我设置的值不匹配,javascript,logical-operators,Javascript,Logical Operators,我找不到代码中可能缺少的内容或错误,无论如何,我创建了一个if-else语句,当出现以下情况时,我可以转到第一个条件: 变量一的值为“N”,变量二或变量三的值为“ValueOne” 或 变量一的值为“N”,变量四的值为“ValueTwo”或“ValueThree” 我代码中的问题是,即使变量1中没有值,只要变量4的值正确,它也会进入第一个条件 您将在代码中看到的值不是我将使用的实际值,它只是一个示例 我尝试使用此代码修复我的问题: function testNum() { var acc

我找不到代码中可能缺少的内容或错误,无论如何,我创建了一个
if-else
语句,当出现以下情况时,我可以转到第一个条件:

变量一的值为“N”,变量二或变量三的值为“ValueOne”


变量一的值为“N”,变量四的值为“ValueTwo”或“ValueThree”

我代码中的问题是,即使变量1中没有值,只要变量4的值正确,它也会进入第一个条件

您将在代码中看到的值不是我将使用的实际值,它只是一个示例

我尝试使用此代码修复我的问题:

function testNum() {
    var accessEquipment = "n";
    var sync = "sample1";
    var fiberServiceAlarm = "sample1";
    var wanLight = "flashingRed";
    var result1 = "success";
    var result2 = "fail";

    if (
        (accessEquipment == "n" && (sync == "sample" || fiberServiceAlarm == "sample")) ||
        (accessEquipment == "n" && (wanLight == "flashingGreen" || wanLight == "off" || wanLight == "flashingRed"))) {
        return result1;
    } else {
        return result2;
    }
}
这解决了问题,但我认为用这种方式编写代码不是很好。有没有办法不把设备翻一番

这是我想要使用的实际代码: 这本书有什么我需要补充的吗? 在本例中,它仍然转到IF语句event accessdevice与我设置的值不匹配,只要wanLight具有flashingRed或其他值,它仍然转到IF语句。我想要的是,只有当accessEquipment有N并且wanLight有这三个值中的任何一个时,它才会通过那里

function testNum() {
    var accessEquipment = "na";
    var sync = "sample1";
    var fiberServiceAlarm = "sample1";
    var wanLight = "flashingRed";
    var result1 = "success";
    var result2 = "fail";

    if (accessEquipment == "n"
        && (sync == "sample" || fiberServiceAlarm == "sample")
        || (wanLight == "flashingGreen" || wanLight == "off" || wanLight == "flashingRed")
    ) {
        return result1;
    } else {
        return result2;
    }
}

需要添加一对括号

if (accessEquipment == "n"
        && ((sync == "sample" || fiberServiceAlarm == "sample")
        || (wanLight == "flashingGreen" || wanLight == "off" || wanLight == "flashingRed")))

通过在数组中获取各种值并使用includes进行检查,您可以获得更紧凑的版本。这适用于常量值和变量

function testNum() {
    var accessEquipment = "n";
    var sync = "sample1";
    var fiberServiceAlarm = "sample1";
    var wanLight = "flashingRed";
    var result1 = "success";
    var result2 = "fail";

    return accessEquipment == "n" && (
            [sync, fiberServiceAlarm].includes("sample") ||
            ["flashingGreen", "off", "flashingRed"].includes(wanLight)
        )
        ? result1
        : result2;
}

'sample1'
!==<代码>“示例”。请检查一下。我应该把这个放在哪里?在设备中?如果是,我需要在if语句中进行检查。我的意思是,您在数据中有
'sample1'
,并检查
'sample'
。结果很不清楚,因为你要么在描述中采用抽象的方法,要么在代码中采用具体的方法。是的,我故意这样做,这样它就不会在if语句中通过,问题是,一旦wanLight闪烁或其他值,它仍然会通过,即使AccessDevice有“na”。我想发生的是,只有当n和flashingRed出现时,它才会通过。抱歉,这实际上是我第一次在StackOverflow中提问,也许a可能会有所帮助,您会想到将一些值分组。我将AccessDevice设置为“na”,这样它就可以通过else语句,但发生的情况是,即使我将它设置为“na”,它仍然会通过if语句这是因为你有这个
accessEquipment==“n”&(…)| |(wanLight…)
这转换为
false&&false | | | true
这计算为
true
只有当accessEquipment==“n”和wanLight为true时,我应该如何将其更改为evalutes为true?
accessEquipment==“n”&(wanLight…)
好吧,我记得昨天我试着把那些括号放进去,但仍然不起作用,等我回到办公室时我们会试试的。无论如何,谢谢你的帮助!