OR 和 AND 条件未按预期返回 - 实施它的最佳方法是什么?
OR and AND conditions not returning as expected - What is best way to implement it?
我有一个使用 || 的 If 语句使用 && 运算符,例如 if((a || b) && c) 但是它仅适用于第一个条件,即 a 但不适用于第二个条件,即 b 即使 运行 调试器我可以看到满足条件它会转到正确的代码行。有没有更好的方法让它在两种情况下都能正常工作?
我现在的代码:
function _getCatFormGUID(catName) {
debugger;
var dept = Browser.getValue(getElement("126D81CA203C21CF014C8A3550227892FE4B4A6A"));
if((catName == '1' && dept == "Entwicklung") || (catName == '7' && dept == "Entwicklung")){
return "A270AE7F957A74EF0842403EEA0032017567F3E8";
}
if((catName == '1' && dept != "Entwicklung") || (catName == '7' && dept != "Entwicklung")) {
return "8EDD0768A7CDF8FD8AE90DB473F41EF0B33FA14F";
}
return "";}
我也试过以下方法:
if((catName == '1' || catName == '7') && dept == "Entwicklung"){
return "A270AE7F957A74EF0842403EEA0032017567F3E8";
}
和
if(catName == '1' && dept == "Entwicklung"){
return "A270AE7F957A74EF0842403EEA0032017567F3E8";
}
if(catName == '7' && dept == "Entwicklung"){
return "A270AE7F957A74EF0842403EEA0032017567F3E8";
}
只有 returns catName =='1'。
如果我对你的问题理解正确,我会把你的第一段代码写成下面这样
function _getCatFormGUID(catName) {
var dept = Browser.getValue(getElement("126D81CA203C21CF014C8A3550227892FE4B4A6A"));
if (catName == '1' || catName == '7') {
if(dept == 'Entwicklung'){
return "A270AE7F957A74EF0842403EEA0032017567F3E8";
}
else{
return "8EDD0768A7CDF8FD8AE90DB473F41EF0B33FA14F";
}
}
else{
return "";
}
}
问题是您必须了解这两个逻辑运算符如何进行比较:因为您的第一个条件 catName == '1'
为真,它永远不会从第一个括号或第二个括号进入第二个条件.
鉴于你的例子,你可以重写你的逻辑条件:
if((catName == '1' && dept == "Entwicklung") || (catName == '7' && dept == "Entwicklung")){
return "A270AE7F957A74EF0842403EEA0032017567F3E8";
}
到
if(dept == "Entwicklung" && catName == '1' || catName == '7'){ return something; }
}
我有一个使用 || 的 If 语句使用 && 运算符,例如 if((a || b) && c) 但是它仅适用于第一个条件,即 a 但不适用于第二个条件,即 b 即使 运行 调试器我可以看到满足条件它会转到正确的代码行。有没有更好的方法让它在两种情况下都能正常工作?
我现在的代码:
function _getCatFormGUID(catName) {
debugger;
var dept = Browser.getValue(getElement("126D81CA203C21CF014C8A3550227892FE4B4A6A"));
if((catName == '1' && dept == "Entwicklung") || (catName == '7' && dept == "Entwicklung")){
return "A270AE7F957A74EF0842403EEA0032017567F3E8";
}
if((catName == '1' && dept != "Entwicklung") || (catName == '7' && dept != "Entwicklung")) {
return "8EDD0768A7CDF8FD8AE90DB473F41EF0B33FA14F";
}
return "";}
我也试过以下方法:
if((catName == '1' || catName == '7') && dept == "Entwicklung"){
return "A270AE7F957A74EF0842403EEA0032017567F3E8";
}
和
if(catName == '1' && dept == "Entwicklung"){
return "A270AE7F957A74EF0842403EEA0032017567F3E8";
}
if(catName == '7' && dept == "Entwicklung"){
return "A270AE7F957A74EF0842403EEA0032017567F3E8";
}
只有 returns catName =='1'。
如果我对你的问题理解正确,我会把你的第一段代码写成下面这样
function _getCatFormGUID(catName) {
var dept = Browser.getValue(getElement("126D81CA203C21CF014C8A3550227892FE4B4A6A"));
if (catName == '1' || catName == '7') {
if(dept == 'Entwicklung'){
return "A270AE7F957A74EF0842403EEA0032017567F3E8";
}
else{
return "8EDD0768A7CDF8FD8AE90DB473F41EF0B33FA14F";
}
}
else{
return "";
}
}
问题是您必须了解这两个逻辑运算符如何进行比较:因为您的第一个条件 catName == '1'
为真,它永远不会从第一个括号或第二个括号进入第二个条件.
鉴于你的例子,你可以重写你的逻辑条件:
if((catName == '1' && dept == "Entwicklung") || (catName == '7' && dept == "Entwicklung")){
return "A270AE7F957A74EF0842403EEA0032017567F3E8";
}
到
if(dept == "Entwicklung" && catName == '1' || catName == '7'){ return something; }
}