Javascript switch statement to excute some of the same functions depending on the case
在javascript中,我试图编写一个switch语句,它执行如下操作-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | swtich(n) { case 1: functionW(); functionX(); functionY(); functionZ(); break; case 2: functionX(); functionY(); functionZ(); break; case 3: functionY(); functionZ(); break; default: functionZ(); break; } |
有更好的方法吗?
Frits van Campen的答案是接近您描述的相同功能。当我使用带/不带回退的开关时,总是有错误。如果n是我要使用的数字:
1 2 3 4 | if(n >= 1){functionW();} if(n >= 2){functionX();} if(n >= 3){functionY();} functionZ(); |
(我删除了我的第二个答案,因为Barmar表达得更好。)
编辑:
它可以修改为使用非数字:
1 2 3 4 5 | var test = false if(n === 1 || test){test = true; functionW();} if(n === 2 || test){test = true; functionX();} if(n === 3 || test){test = true; functionY();} functionZ(); |
我只是想了一个不同的解决方案。
编写如下函数:
1 2 3 4 5 6 7 8 9 10 11 | function functionW() { // do stuff functionX(); } function functionX() { // do stuff functionY(); } // etc |
那么你就不需要一个故障转移,你可以有一个开关箱,有断开。
仅仅因为您定义了诸如
不要使用
1 2 3 4 | var functions = [ functionW, functionX, functionY, functionZ ]; for (i = n; i < functions.length; i++) { functions[i](); } |
在这种情况下,
1 | for (i = (n >= functions.length ? functions.length-1 : n); i < functions.length; i++) { |
拆卸
这些案件将失败。
确保您明确地注意到,您不希望
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | switch(n) { case 1: functionW(); // dont break case 2: functionX(); // dont break case 3: functionY(); // dont break default: functionZ(); // dont break } |
如果