如何在for循环中使用switch语句?

时间:2018-08-14 16:50:47

标签: javascript

'small', 'medium',  'large'

现在,我想知道如何在循环内使用switch语句编写代码:

for(var i=0; i<20; i++) {
  if(i%3===0) {
   console.log(i, 'Foo')
  } else {
   console.log(i, 'Default')
  }
}

但是它总是导致“默认”。我尝试使用标签,匿名函数等,但是无法输出if条件。我的转换语句有问题吗?

编辑:

我实际上是想这样做:

for(var i=0; i<20; i++) {
  switch(i) {
   case (i%3===0):
    console.log(i,'Foo')
    break
   default:
    console.log(i,'Default')
    break
  }
}

4 个答案:

答案 0 :(得分:2)

您正在尝试使用switch语句,例如一系列ifelse if语句。 switch语句不能那样工作。与switch语句中变量值匹配的第一种情况将被评估。您可以使用switch(true),以便评估第一个为true的情况。

for(var i=0; i<20; i++) {
  switch(true) {
   case (i%3===0)://if
    console.log(i,'Foo')
    break
   case (i%5===0)://else if
     console.log(i,'Bar')
     break
   default://else
    console.log(i,'Default')
    break
  }
}

否则,您需要将i的值以3取模(如果它等于零,则可以被3整除)。

for(var i=0; i<20; i++) {
  switch(i%3) {
   case (0):
    console.log(i,'Foo')
    break
   default:
    console.log(i,'Default')
    break
  }
}

但是,在这种情况下通常不应使用switch语句。您应该只使用一系列if(和else if语句)。

for(var i=0; i<20; i++) {
  if(i%3==0){
    console.log(i, 'Foo');
  } else if(i%5==0){
    console.log(i, 'Bar');
  } else {
    console.log(i, 'Default');
  }
}

答案 1 :(得分:1)

您可以在变量中使用i%3的值,并在switch-case中使用它,因为case会计算常量或表达式。

for(var i=0; i<20; i++) {
  var val = i%3;
  switch(val) {
   case 0:
    console.log(i,'Foo')
    break;
   default:
    console.log(i,'Default')
  }
}

答案 2 :(得分:0)

您应该切换要检查的表达式(在这种情况下为i%3),然后为该表达式可能要使用的大小写,例如case 0:case 1:等:

for(var i=0; i<20; i++) {
  switch(i%3) {
   case 0:
    console.log(i,'Foo')
    break;
   case 1:
    console.log(i,'Bar')
   default:
    console.log(i,'Default')
  }
}

答案 3 :(得分:0)

尝试-在%3移动的情况下

for(var i=0; i<20; i++) {
  switch(i%3) {
   case 0:
    console.log(i,'Foo')
    break;
   default:
    console.log(i,'Default')
    break;
  }
}