'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
}
}
答案 0 :(得分:2)
您正在尝试使用switch
语句,例如一系列if
和else 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;
}
}