美文网首页
switch没有break陷阱

switch没有break陷阱

作者: Vivian_06e6 | 来源:发表于2018-10-19 17:41 被阅读0次
var values = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
var interations = Math.ceil(values.length/8);
var startAt = values.length%8;
var i=0;
//在有break的情况下
//startAt=0;i=1; alert 1;iterations=2;
//startAt=0;i=2;alert 2;iterations=1;
//startAt=0;i=3;alert 3;iterations=0;

function process(v){
  console.log(v)
}

do{
  switch(startAt){
    case 0 :process(values[i++]);
    case 7 :process(values[i++]);
    case 6 :process(values[i++]);
    case 5 :process(values[i++]);
    case 4 :process(values[i++]);
    case 3 :process(values[i++]);
    case 2 :process(values[i++]);
    case 1 :process(values[i++]);
  }
  startAt=0;
  console.log("interations"+interations)
  console.log("startAt"+startAt)
  console.log("i"+i)
}while(--interations>0)
//没有有break的情况下
/*
打印:1
打印:interations3
打印: startAt0
打印: i1
打印: 2
打印: 3
打印: 4
打印: 5
打印: 6
打印: 7
打印: 8
打印: 9
打印: interations2
打印: startAt0
打印: i9
打印: 10
打印: 11
打印: 12
打印: 13
打印: 14
打印: 15
打印: 16
打印: 17
打印: interations1
打印: startAt0
打印: i17
第一遍执行一次 第二遍和第三遍分别执行 8次process函数
*/

相关文章

网友评论

      本文标题:switch没有break陷阱

      本文链接:https://www.haomeiwen.com/subject/jwruzftx.html