JavaScript switch case 语句设置范围

不知是否出于什么缘故,我google搜索
javascript switch case 范围
这几个关键字,出来的前几条都是csdn上关于无解的表示。
可能是其他编译型语言中,case后便必须是常量的缘故吧。

后来在一个边角的地方看到某人发帖是VB还是不知道哪个语言中的中实现了switch case语句的范围选择,大家看了下面代码就明白了。

  1. var x=1
  2. switch(true){
  3.     case x>0&&x<10:
  4.         alert(1);break;
  5.     case x>=10&&x<20:
  6.         alert(2);break;
  7. }

看明白啦?就是利用传递给switch的参数设为true,把原来的变量变成常量,常量变变量,逆向思维。巧妙吧?

本来我想出来的办法是这样的,没有上面的好,没有跳出思维定势,也贴出来给大家看看,权当娱乐娱乐了

  1. var x=1
  2. switch(x){
  3.     case (x>0&&x<10)*x:
  4.         alert(1);break;
  5.     case (x>=10&&x<20)*x:
  6.         alert(2);break;
  7. }
This entry was posted in JavaScript and tagged , , . Bookmark the permalink.

3 Responses to JavaScript switch case 语句设置范围

  1. Noker says:

    有机会试试:)

  2. xdsnet says:

    不过这样是否符合规范呢?
    有时候不要做太多突破规范的工作,否则规范改动后会出现大量不兼容问题!
    我不知道是否是switch…case
    会比用 if…else if…else
    效率更高?
    如果不是显著高效的话,可能这样做意义就更小啦。

  3. Shawphy says:

    举个例子吧

    switch (true) {
    case 80<=s:
    alert("课上表扬");
    case 60<=s&&s<80:
    alert("登记成绩为及格");
    break;
    case s<40:
    alert("通知家长");
    case s<60:
    alert("登记成绩为不及格");
    break;
    }

    尝试一下用if else来写
    是不是会比较冗长其可读性欠佳呢?

發表迴響

您的電子郵件位址並不會被公開。 必要欄位標記為 *

*

您可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>