JavaScript编译问题:将IF语句展开为SWITCH-CASE语句

时间:2018-11-09 16:58:03

标签: javascript switch-statement

多年以来,我一直在使用switch case语句,当时我看到一系列必要的if else语句可能会使代码的可读性降低。例如,展开的开关盒如下所示:

switch (true) {
  case compoundBooleanExpression1:
    handler1();
    break;
  case compoundBooleanExpression1:
    handler2();
    break;
  default:
    defaultHandler;
}

期望像一系列if语句一样,顺序对表达式进行求值,直到找到匹配项,然后执行处理程序。我尝试遵循相同的约定,好像-每个表达式的计算结果均为true。在某些情况下,这会使代码更具可读性-表达式中的相似性或对称性会更好地对齐。

在比较c / c ++和其他编译语言如何处理切换时,似乎在运行时编译语言会将case语句中的表达式列表到存储表中。它在评估语句之前存储这些。因此,要存储它们,必须预编译值。听起来所有表达式都将被求值,效率要比仅根据需要计算运行时值低。

是否有人了解浏览器Javascript编译器将来是否会遵循预编译的方法?对于Javascript来说这不是问题吗?理想情况下,将存在一种强制“ &&”退出早期性质的方法,以在退出块之前仅执行所需数量的代码。

0 个答案:

没有答案