资讯专栏INFORMATION COLUMN

switch语句的妙用

scola666 / 1736人阅读

摘要:注意必须把运算符的结果进行显示转换为布尔值,才能匹配因为的表达式的返回值不是布尔类型,它返回的是表达式中第一个为或第一个为的那个值所以,只要你想得到的,只要符合规则,都能用实现就是不知道这样写的代码好不好了

switch语句的普通用法很简单,如下:

var a = 3;
switch (a) {
    case 1:
        console.log(a);
        break;
    case 2:
    case 3:
        console.log(a);
        break;
    default:
        break;
}

这里a和case列表中从上而下逐一做比较,如果匹配就执行case中的代码,若有break则跳出,无break则继续往下匹配,直到新的匹配和break或switch代码块结束。
注意:
a和case值的匹配算法是执行严格相等比较的(‘===’),通常a和case的值都是简单值。

case的值除了简单值之外,还可以是各种表达式,switch (a){...}中的a会和case中的表达式的结果值进行比较(“===”),由此,我们可以这样:

var a = [4], b = "3";

function foo(a, b) {
    return Math.abs(a - b) < 2;
}

switch (true) {
    case !(a && b):    //过滤掉a,b其中有为‘假值’的情况
        console.log("a:"+a," b:"+b);
        break;
    case foo(a,b):   //当a,b的差值在2以内,foo函数返回true
        console.log("a - b < "+Math.abs(a-b));
    case a == b:
        console.log(a+"=="+b);
        break;
    case a < b:
        console.log(a+"<"+b);
        break;
    case a > b:
        console.log(a+">"+b);
        break;
    default:
        break;
}

以上例子中,true和每个case的表达式的值进行严格相等比较,当且仅当case表达式的值为布尔值true时才匹配,任何其他真值都不匹配。
注意:case !(a && b):必须把&&、||运算符的结果进行显示转换为布尔值,才能匹配(因为&&、||的表达式的返回值不是布尔类型,它返回的是表达式中第一个为true、或第一个为false的那个值)

所以,只要你想得到的,只要符合规则,都能用switch实现!就是不知道这样写的代码好不好了!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80582.html

相关文章

  • 妙用协程】 - 可持久化协程能被用来实现工作流

    摘要:常规版本的的是不可以被持久化保存的。在流程被阻塞的时候比如需要审批老板不在把协程持久化成入库,等流程不再阻塞的时候把协程重新从数据库里拉起来继续执行。 常规版本的Python的generator是不可以被持久化保存的。但是stackless和pypy这两个修改版本的Python解释器可以。下面这段代码演示了如何把一个执行中的函数持久化保存,然后过段时间再把函数从上次执行到的地方原样拉起...

    wpw 评论0 收藏0
  • 妙用协程】 - 可resume异常处理

    摘要:标准的异常处理是这样的这段代码会打印出而不会打印出,因为异常会中断当前流程,跳转到部分去继续执行。这种行为类似里的。如何实现的其实原理上很简单。的时候把当前协程的状态保存起来,如果决定要,就把协程的时刻的状态重新恢复然后从那个点继续执行。 标准的异常处理是这样的 try: print(hello) raise Exception() print(!!!) ex...

    Jeff 评论0 收藏0
  • JavaScript中this妙用

    摘要:关键字始脚本能够根据使用这个关键字的上下文将值传递给函数。替我们完成的工作之一是从链接获得也就是标签的属性。实际上,可以让站点上的所有链接都调用这个相同的代码,这一行代码都会自动获得相应的值。 JavaScript关键字this始JS脚本能够根据使用这个关键字的上下文将值传递给函数。我们先来看如下一个网页,在用户单击链接之后,弹出一个alert框,然后再转到href属性所指的网页HTM...

    jayzou 评论0 收藏0
  • return/break语句妙用

    摘要:在里面,一般我们想让程序在里面执行到一半时,经过判断或者完成某种操作后停止执行后面的代码,会用结束掉。可以在中间加入多个作为断点,控制逻辑的流程。 在JavaScript里面,一般我们想让程序在function里面执行到一半时,经过判断或者完成某种操作后停止执行后面的代码,会用return结束掉function。 例如: //去除前后的空格function spaceWord(vRet...

    Batkid 评论0 收藏0
  • for in妙用

    摘要:前两天在看司徒正美的框架设计,看到了一个模拟方法的函数,怎能如此之妙语句在可用于遍历对象中的属性与方法在上面的方法中,就用到了语句,其中的就相当于中的就这样,遍历到的属性就巧妙的到了里面。 前两天在看司徒正美的《javascript框架设计》,看到了一个模拟Object.keys()方法的函数,怎能如此之妙!!! function keys(obj){ var a = []; ...

    陈伟 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<