JavaScript 中你不知道的 default

defaultswitch 中是可选的,并非必不可少,但我们通常会把它放在最后来执行兜底操作。但是你们有试过把 default 放在 case 的中间吗?会发生什么神奇的现象吗?今天就让我们来做几个实验。

实验1

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

上面的示例输出的结果依次是 default34

实验2

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

上面的示例输出的结果依次是 default3


这两个实验很迷,输出 default 我们能理解,但为什么没有匹配到的 3 和 4 也会输出呢?既然 3 和 4 输出了,为什么 1 和 2 不输出呢?

其实上面的代码是这样执行的,首先遍历并找到匹配的 case,如果没有匹配(我们这个例子就是没有匹配的)则执行 default,但此时 default 中不存在 break,所以程序又沿着代码继续往下走了!输出了 3,第二个实验中因为输出 3 之后碰到了 break,所以没有输出 4。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,521评论 0 5
  • 搭建环境:jdk8,maven3.3.9,MySQL 5.6,mybatisplus3.0-gamma开发工具:i...
    shen33阅读 24,003评论 1 34
  • 生活,就是心怀最大的善意在荆棘中穿行。 即使被刺伤,亦不改初衷。 2017年7月31日 星期一 晴 2017年下半...
    洛安娜阅读 261评论 0 0
  • “我老公特别佩服我这种积极乐观的人,什么难事儿到了我这都大刀阔斧嘁嚓咔嚓不是个事儿。我觉得吧,遇山凿洞遇水搭桥,饭...
    songging阅读 103评论 0 1