我有以下代码:
for (var i in players) {
for (var x in players[i].bullets) {
for (var y in xpBoosts) {
if (something === true) {
// do something
continue;
}
}
}
}
continue语句将做什么?它会循环最里面的for循环还是最外面的?
有什么办法可以使continue语句循环到下一个项目符号?
答案 0 :(得分:7)
continue
终止其所在循环的当前迭代。要终止另一个循环的迭代,请将其与标签一起使用:
for (var i in players) {
bullets: for (var x in players[i].bullets) {
for (var y in xpBoosts) {
if (something === true) {
// do something
continue bullets;
}
}
}
}
答案 1 :(得分:2)
在您的特定代码中,continue
不会执行任何操作。
continue
是一个关键字,它将退出循环的当前迭代并继续进行下一个迭代。
例如:
for (i = 1; i <= 10; i++) {
if (i == 5) continue;
console.log(i);
}
您会注意到5
未打印到控制台。当条件检查被证明是正确的时,它将继续进行下一次迭代,而无需执行该块中的其余代码。
答案 2 :(得分:2)
默认情况下,continue
和break
适用于最内层的循环。在您的特定代码中,它将继续此循环:
for (var y in xpBoosts) {
但是,可以通过标签自定义此行为。例如:
outerLoop:
for (var i = 0; i < someVal; i++){
middleLoop:
for (var j = 0; j < someOtherVal; j++){
innerLoop:
for (var k = 0; k < yetAThirdVal; k++){
continue;//skip to next iteration of innerLoop
continue innerLoop;//skip to next iteration of innerLoop
continue middleLoop;//skip to next iteration of middleLoop
continue outerLoop;//skip to next iteration of outerLoop
}
}
}
希望这会有所帮助!
答案 3 :(得分:1)
编辑:我将答案留在这里,但我更喜欢ohlec's answer。
continue
仅继续执行最里面的for
循环的下一个迭代。
对于每个项目符号,您都可以具有一个初始化为false
的变量。如果您继续进行内部循环,则可以将其标记为true
。
for (var x in players[i].bullets) {
var skipThisBullet = false;
for (var y in xpBoosts) {
if (something === true) {
// do something
skipThisBullet = true;
continue;
}
}
if (skipThisBullet) continue;
}