for(var i=0; i<20; i++) {
if(i%3===0) {
console.log(i, 'Foo')
} else {
console.log(i, 'Default')
}
}Run Code Online (Sandbox Code Playgroud)
现在,我想知道如何在循环内使用 switch 语句编写代码:
for(var i=0; i<20; i++) {
switch(i) {
case (i%3===0):
console.log(i,'Foo')
break
default:
console.log(i,'Default')
break
}
}Run Code Online (Sandbox Code Playgroud)
但它总是导致“默认”。我曾尝试使用标签、匿名函数等,但无法像 if 条件那样输出。我的 switch 语句有问题吗?
编辑:
事实上,我试图这样做:
case (i%3===0):
console.log(i,'Foo')
break
case (i%5===0):
console.log(i,'Bar')
break
Run Code Online (Sandbox Code Playgroud)
您正在尝试使用switch像一系列ifandelse if语句这样的语句。switch 语句不能那样工作。将评估与 switch 语句中的变量值匹配的第一种情况。您可以使用switch(true)so 将评估第一个为真的情况。
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
}
}Run Code Online (Sandbox Code Playgroud)
否则,您需要切换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
}
}Run Code Online (Sandbox Code Playgroud)
但是,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');
}
}Run Code Online (Sandbox Code Playgroud)