我对javascript有些新意,我只是想知道这是否可行。
考虑一下:
if(foo('1')){
// do something
}
else if(foo('2')){
// do something else
}
else if(foo('3')){
// do something different
}
else if(foo('4')){
// do something completely different
}
...
else if(foo(n)){
...
}
foo(stringValue)
是返回true
或false
的方法,但问题是我无法以任何方式更改该方法(例如更改返回值)。现在,如果我想重构代码,我可以将所有foo参数值放在集合中,为if语句中的每个唯一操作创建一个方法,迭代所有参数值,并在foo(n)时调用适当的方法)返回true,但这似乎是一种非常丑陋的方式。是否有更好的方法可以使用switch语句来实现这一目标?
答案 0 :(得分:1)
如果你想使用switch语句(不确定它是否真的更好),你可以使用这个技巧:
switch( true ) {
case foo('1'):
// do something
break;
case foo('2'):
// and so on
break;
default:
// all returned false
}
答案 1 :(得分:1)
我更喜欢这个。只是将检查代码与处理代码分开。
var array = ["1", "2", "3", "4"];
var iLength = array.length;
for(var i= 0; i < iLength ;i++)
{
var strValue = array[i];
if(foo(strValue))
{
break;
}
}
switch(strValue)
{
case array[0]:
//perform operations here for case "1"
break;
case array[1]:
//perform operations here for case "2"
break;
}