我需要在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概念的替代解决方案。
当前回答
更干净的处理方法
if (["triangle", "circle", "rectangle"].indexOf(base.type) > -1)
{
//Do something
}else if (["areaMap", "irregular", "oval"].indexOf(base.type) > -1)
{
//Do another thing
}
您可以为具有相同结果的多个值执行此操作
其他回答
这在常规JavaScript中工作:
function theTest(val) {
var answer = "";
switch( val ) {
case 1: case 2: case 3:
answer = "Low";
break;
case 4: case 5: case 6:
answer = "Mid";
break;
case 7: case 8: case 9:
answer = "High";
break;
default:
answer = "Massive or Tiny?";
}
return answer;
}
theTest(9);
视情况而定。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 " > < /脚本>
我是这样使用的:
switch (true){
case /Pressure/.test(sensor):
{
console.log('Its pressure!');
break;
}
case /Temperature/.test(sensor):
{
console.log('Its temperature!');
break;
}
}
switch语句用于根据条件从许多代码块中选择要执行的一个
switch表达式中的值与提供的不同值进行比较 如果匹配,则执行与之相关的代码块 如果没有匹配,则执行默认块
语法:
switch(expression) {
case x:
// code block
break;
case y:
// code block
break;
default:
// code block
}
注意: 必须注意的是,如果省略了break语句,那么即使它们与switch表达式不匹配,下一个块也将被执行。因此,如果不想获得指定的行为,不要忘记在每个代码块的末尾添加break语句
一个实际的例子: 下面的代码基于一个整数(由'new Date().getDay()'提供)以字符串形式返回一周中的当前日期。
switch (new Date().getDay()) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
}
代码样本取自W3Schools
你可以这样做:
alert([
"afshin",
"saeed",
"larry",
"sasha",
"boby",
"jhon",
"anna",
// ...
].includes(varName)? 'Hey' : 'Default case')
或者只是一行代码:
alert(["afshin", "saeed", "larry",...].includes(varName)? 'Hey' : 'Default case')
这比埃里克的回答有所改善