更短的条件在js

Mar*_*ark 5 javascript

我有这样的条件:

if (foo == 'fgfg' || foo == 'asdf' || foo == 'adsfasdf') {
// do stuff

}
Run Code Online (Sandbox Code Playgroud)

当然有更快的方式来写这个?

谢谢.

erj*_*ang 6

您可以考虑使用switch-case语句

switch(foo) {
  case "fgfg":
  case "asdf":
  case "adsfasdf":
    // ...
}
Run Code Online (Sandbox Code Playgroud)

它实际上并不短,但根据您使用的条件数量可能更具可读性.


Ori*_*ach 4

我会让条件语句保持原样。任何巧妙的缩短它们的方法都会使代码不那么惯用并且可读性较差。

现在,如果您确实关心可读性,您可以定义一个函数来进行比较:

if( foo_satisfies_condition(foo) ) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

或者:

if( is_month_name(foo) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

如果您为函数指定一个能够忠实描述其功能的名称,那么将更容易理解代码的意图。

如何实现该函数取决于您需要的比较次数。如果要比较的字符串数量非常大,则可以使用哈希。不过,在阅读调用代码时,实现细节并不重要。