我需要在JavaScript开关语句的多个情况下,类似于:
switch (varName)
{
case "afshin", "saeed", "larry":
alert('Hey');
break;
default:
alert('Default case');
break;
}
我该怎么做呢?如果在JavaScript中没有办法做这样的事情,我想知道一个也遵循DRY概念的替代解决方案。
我需要在JavaScript开关语句的多个情况下,类似于:
switch (varName)
{
case "afshin", "saeed", "larry":
alert('Hey');
break;
default:
alert('Default case');
break;
}
我该怎么做呢?如果在JavaScript中没有办法做这样的事情,我想知道一个也遵循DRY概念的替代解决方案。
当前回答
使用switch语句的直通特性。匹配的case会一直运行,直到找到break(或者switch语句的结尾),所以你可以这样写:
switch (varName)
{
case "afshin":
case "saeed":
case "larry":
alert('Hey');
break;
default:
alert('Default case');
}
其他回答
你可以这样写:
switch (varName)
{
case "afshin":
case "saeed":
case "larry":
alert('Hey');
break;
default:
alert('Default case');
break;
}
视情况而定。Switch计算一次且仅计算一次。在匹配时,所有后续的case语句直到“break”火,无论case说什么。
var onlyMen = true; var onlyWomen = false; var only成人= false; (函数(){ 开关(真){ 案例onlyMen: console.log(“onlymen”); 案例onlyWomen: console.log(“onlyWomen”); 案例onlyAdults: console.log(“onlyAdults”); 打破; 默认值: console.log(“违约”); } }) ();//只返回男人,只返回女人,只返回成年人 < script src = " https://getfirebug.com/firebug-lite-debug.js " > < /脚本>
更干净的处理方法
if (["triangle", "circle", "rectangle"].indexOf(base.type) > -1)
{
//Do something
}else if (["areaMap", "irregular", "oval"].indexOf(base.type) > -1)
{
//Do another thing
}
您可以为具有相同结果的多个值执行此操作
使用switch语句的直通特性。匹配的case会一直运行,直到找到break(或者switch语句的结尾),所以你可以这样写:
switch (varName)
{
case "afshin":
case "saeed":
case "larry":
alert('Hey');
break;
default:
alert('Default case');
}
下面是另一个易于使用的开关case语句。可以满足您的要求。我们可以在switch语句中使用find方法来获得所需的输出。
switch(varname){
case["afshin","saeed","larry"].find(name => name === varname):
alert("Hey")
break;
default:
alert('Default case');
break;
}