如果执行了任何“if ... else if”,则运行代码?

时间:2012-04-12 22:20:52

标签: javascript if-statement

如果执行if + else if + else if...中的任何一行,我想运行代码:

if(){
    ...
}else if(){
    ...
}else if(){
    ...
}
//run something if ANY of the above was executed

我可以在每个ifelse 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撤消此更改。这很好,但我真的很担心这段代码的可读性

我还缺少其他更具可读性的替代方案吗?

2 个答案:

答案 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){
    ...
}

我认为出于可读性目的,这里的主要内容是为变量找到一个非常好的名称,具体取决于实际所代表的内容。