单层循环
while (i < 10) {
i++
if (i % 2 === 0) continue
console.log('i 当前为:' + i)
}
var i = 0
while (i < 10) {
i++
if (i % 2 === 0) break
console.log('i 当前为:' + i)
}
Label 标签双层循环
top: for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
if (i === 1 && j === 1) break
console.log('i=' + i + ', j=' + j)
}
}
top: for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
if (i === 1 && j === 1) continue
console.log('i=' + i + ', j=' + j)
}
}
top: for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
if (i === 1 && j === 1) break top
console.log('i=' + i + ', j=' + j)
}
}
上面代码为一个双重循环区块,break命令后面加上了top标签(注意,top不用加引号),满足条件时,直接跳出双层循环。如果break语句后面不使用标签,则只能跳出内层循环,进入下一次的外层循环。
top: for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
if (i === 1 && j === 1) continue top
console.log('i=' + i + ', j=' + j)
}
}
上面代码中,continue命令后面有一个标签名,满足条件时,会跳过当前循环,直接进入下一轮外层循环。如果continue语句后面不使用标签,则只能进入下一轮的内层循环。
foo: {
console.log(1)
break foo
console.log('本行不会输出')
}
console.log(2)
foo: {
console.log(1)
//break
//continue
//continue foo
都会报错
console.log('本行不会输出')
}
console.log(2)