如果执行if + else if + else if...
中的任何一行,我想运行代码:
if(){
...
}else if(){
...
}else if(){
...
}
//run something if ANY of the above was executed
我可以在每个if
或else if
添加我想要执行的行,但这将是太多的垃圾邮件。
我所做的是以下内容:
temp=i;//store a copy
i=-1;//make the change
if(){
...
}else if(){
...
}else if(){
...
}else{
i=temp//restore if none was executed
}
以上内容将应用更改而不管任何内容,并使用else
撤消此更改。这很好,但我真的很担心这段代码的可读性
我还缺少其他更具可读性的替代方案吗?
答案 0 :(得分:1)
嗯,你总是可以做到
any=true;
if (...) {
} else if (...) {
} else if (...) {
} else {
any = false;
// or: return, if you are inside a function!
}
if (any) {
// one of the ifs was executed.
}
如果您使用函数来包装它,您也可以在最后的其他内容中return
。那可能是最干净的版本。
答案 1 :(得分:1)
我不确定为什么你需要两个变量。怎么样?
var conditionMet = true;
if(){
...
}else if(){
...
}else if(){
...
}else{
conditionMet = false;
}
if(conditionMet){
...
}
我认为出于可读性目的,这里的主要内容是为变量找到一个非常好的名称,具体取决于实际所代表的内容。