多年以来,我一直在使用switch case语句,当时我看到一系列必要的if else语句可能会使代码的可读性降低。例如,展开的开关盒如下所示:
switch (true) {
case compoundBooleanExpression1:
handler1();
break;
case compoundBooleanExpression1:
handler2();
break;
default:
defaultHandler;
}
期望像一系列if语句一样,顺序对表达式进行求值,直到找到匹配项,然后执行处理程序。我尝试遵循相同的约定,好像-每个表达式的计算结果均为true。在某些情况下,这会使代码更具可读性-表达式中的相似性或对称性会更好地对齐。
在比较c / c ++和其他编译语言如何处理切换时,似乎在运行时编译语言会将case语句中的表达式列表到存储表中。它在评估语句之前存储这些。因此,要存储它们,必须预编译值。听起来所有表达式都将被求值,效率要比仅根据需要计算运行时值低。
是否有人了解浏览器Javascript编译器将来是否会遵循预编译的方法?对于Javascript来说这不是问题吗?理想情况下,将存在一种强制“ &&”退出早期性质的方法,以在退出块之前仅执行所需数量的代码。