在JavaScript中切换语句多个案例

本文探讨了在JavaScript中如何实现多case的switch语句,通过利用switch语句的fall-through特性,或采用对象映射、数组includes等替代方案,遵循DRY原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文翻译自:Switch statement multiple cases in JavaScript

I need multiple cases in switch statement in JavaScript, Something like: 我需要在JavaScript的switch语句中使用多种情况,例如:

switch (varName)
{
   case "afshin", "saeed", "larry": 
       alert('Hey');
       break;

   default: 
       alert('Default case');
       break;
}

How can I do that? 我怎样才能做到这一点? If there's no way to do something like that in JavaScript, I want to know an alternative solution that also follows DRY concept . 如果没有办法在JavaScript中执行类似的操作,我想知道一个也遵循DRY概念的替代解决方案。


#1楼

参考:https://stackoom.com/question/tPz5/在JavaScript中切换语句多个案例


#2楼

Use the fall-through feature of the switch statement. 使用switch语句的直通功能。 A matched case will run until a break (or the end of the switch statement) is found, so you could write it like: 匹配的大小写将一直运行到找到break (或switch语句的末尾)为止,因此您可以这样写:

switch (varName)
{
   case "afshin":
   case "saeed":
   case "larry": 
       alert('Hey');
       break;

   default: 
       alert('Default case');
}

#3楼

In Javascript to assign multiple cases in a switch, we have to define different case without break inbetween like given below: 在Javascript中,要在一个开关中分配多个different case without break inbetween ,我们必须定义different case without break inbetween如下所示:

   <script>
      function checkHere(varName){
        switch (varName)
           {
           case "saeed":
           case "larry":
           case "afshin":
                alert('Hey');
                break;
          case "ss":
               alert('ss');
               break;
         default:
               alert('Default case');
               break;
       }
      }
     </script>

Please see example click on link 请看示例点击链接


#4楼

Here's different approach avoiding the switch statement altogether: 这是完全避免使用switch语句的另一种方法:

var cases = {
  afshin: function() { alert('hey'); },
  _default: function() { alert('default'); }
};
cases.larry = cases.saeed = cases.afshin;

cases[ varName ] ? cases[ varName ]() : cases._default();

#5楼

If you're using ES6, you can do this: 如果您使用的是ES6,则可以执行以下操作:

if (['afshin', 'saeed', 'larry'].includes(varName)) {
   alert('Hey');
} else {
   alert('Default case');
}

Or for earlier versions of JavaScript, you can do this: 或者对于早期版本的JavaScript,您可以执行以下操作:

if (['afshin', 'saeed', 'larry'].indexOf(varName) !== -1) {
   alert('Hey');
} else {
   alert('Default case');
}

Note that this won't work in older IE browsers, but you could patch things up fairly easily. 请注意,这在较旧的IE浏览器中不起作用,但是您可以相当轻松地对其进行修补。 See the question determine if string is in list in javascript for more information. 有关更多信息,请参见确定字符串是否在javascript列表中的问题。


#6楼

you can use the ' in ' operator... 您可以使用' in '运算符...
relies on the object/hash invocation... 依赖于对象/哈希调用...
so its as fast as javascript can be... 因此它的速度与javascript一样快...

// assuming you have defined functions f(), g(a) and h(a,b) 
// somewhere in your code
// you can define them inside the object but... 
// the code becomes hard to read, I prefer this way

o = { f1:f, f2:g, f3:h };

// if you use "STATIC" code can do:
o['f3']( p1, p2 )

// if your code is someway "DYNAMIC", to prevent false invocations
// m brings the function/method to be invoked (f1, f2, f3)
// and you can rely on arguments[] to solve any parameter problems
if ( m in o ) o[m]()

Enjoy, ZEE 享受,ZEE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值