以这种方式使用if/else-if/else是一种很好的做法

Is using if/else if/else this way a good practice?

本文关键字:一种 很好 else 方式使 if else-if      更新时间:2023-09-26

我正在开发一款从以前的供应商那里继承的应用程序,在客户端javascript的许多地方,我看到了这样的东西:

if (self.DESIGNEE_TYPE_SCREEN_ROUTE_REGEX.test(url)) {
    goToSelectDesigneeType.call(self);
} else if (self.FUNCTION_CODES_SCREEN_ROUTE_REGEX.test(url)) {
    goToSelectFunctionCodes.call(self);
} else if (self.DISCIPLINE_SCREEN_ROUTE_REGEX.test(url)) {
    goToSelectDiscipline.call(self);
} else {
    goToSelectDesigneeType.call(self);
} else ...

这是用来进入工作流的下一步的,它工作得很好,但有些地方我不太满意。这很常见吗,或者有更好的方法做同样的事情吗?

您可以在此处使用switch(true)习语。

switch(true) {
  case self.DESIGNEE_TYPE_SCREEN_ROUTE_REGEX.test(url) :
    goToSelectDesigneeType.call(self);
    break;
  case self.FUNCTION_CODES_SCREEN_ROUTE_REGEX.test(url) :
    goToSelectFunctionCodes.call(self);
    break;
  case self.DISCIPLINE_SCREEN_ROUTE_REGEX.test(url) :
    goToSelectDiscipline.call(self);
    break;
  default :
    goToSelectDesigneeType.call(self);
}

但就我个人而言,这本书读起来容易多了。