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…)
好吧,我记得昨天我试着把那些括号放进去,但仍然不起作用,等我回到办公室时我们会试试的。无论如何,谢谢你的帮助!