如何简化具有许多条件的 IF 语句

我经常遇到如下代码示例。


if(X == x && A == a){

}

else if (X == y && A == b){

}

else if (X == z && A == c){

}

else if (X == zz && A == d){

}

或者有时像这样的条件


if(X == x && A == a){

}

else if (X == x && A == b){

}

else if (X != x &&  A == a){

}

else if (X !=x  && A == b){

}

在效率、代码清晰性和可理解性方面,是否有更高效、更好的方法来重构这段代码?


ibeautiful
浏览 172回答 3
3回答

catspeake

您可以将语句包装在一个函数中,它会更干净一点: if(X == x && A == a){  do_A();}else if (X == x && A == b){  do_B();}else if (X != x &&  A == a){  do_C()}else if (X !=x  && A == b){  do_D()}会成为 :const doSomething = () => {  if (X == x && A == a) return do_A();  if (X == x && A == b) return do_B();  if (X != x &&  A == a) return do_C();  if (X !=x  && A == b) return do_D();};doSomething();

翻过高山走不出你

你可以使用 switch 语句,像这样: switch(expression) { case x: // code block break; case y: // 代码块中断;默认值:// 代码块 } 但是您不会拥有@jcubic 提到的更高效的代码

森栏

一个可能的解决方案是使用switch-case如下语句:switch(X + "|" + A) {    case x + "|" + a:        ...        break;    case y + "|" + a:        break;    case z + "|" + c:        break;    case zz + "|" + d:        break;}我不知道您是否认为这种写作风格对您来说更好看,但它的效率低于您在问题中提出的那种,因为您必须在比较它们之前加入字符串。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript