JS Label
2023-12-07 22:36:07
当我们写了一个双循环的时候 例如这样 👇🏻
ts
for (let i = 0; i < 10; i++) {
console.log(`外层循环: ${i}`)
for (let j = 0; j < 5; j++) {
console.log(`内层循环: ${j}`)
if (i + j === 10) {
console.log('退出循环')
}
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
我们希望在某个条件下可以退出全部的循环 而不只是内层的循环
我们可能会想到在内部来定义一个 flag 当条件满足时为 flag 设置为 true 然后来退出
ts
for (let i = 0; i < 10; i++) {
let flag = false
console.log(`外层循环: ${i}`)
for (let j = 0; j < 5; j++) {
console.log(`内层循环: ${j}`)
if (i + j === 10) {
console.log('退出循环')
flag = true
break
}
}
if (flag) {
break
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
我们这样就满足了需求,但是有一个更简便的方法,那就是通过 JS label 来为循环打上标记
ts
outer: for (let i = 0; i < 10; i++) {
console.log(`外层循环: ${i}`)
for (let j = 0; j < 5; j++) {
console.log(`内层循环: ${j}`)
if (i + j === 10) {
console.log('退出循环')
break outer
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
我们这里为外层的循环打上一个标记 outer
,当我们的条件满足时 在break后面跟上前面的标记 就会直接退出标记的循环
详情 => MDN label statements