JavaScript 循环中断研究与总结-用法篇
上篇我们讲了 break , continue , return 这三个常用的关键字, 本篇讲一下在具体循环或函数中的用法
# 结论
for,for...in,for...of: 当没有label标记时候,break跳出本次循环并执行循环体后的代码,continue结束本次循环执行下一次循环. 没有return.Array.forEach: 遍历整个数组,return false或者return true都是结束本次循环执行下一次循环. 没有break或continue. 我想你可能需要跳出 forEachArray.map:map和forEach类似, 有返回值, 返回结果是return值组成的数组.jQuery.each:return false跳出本次循环并执行循环体后的代码;return true结束本次循环执行下一次循环. 没有break或continue.
# for
# 1. break :
var arr = [1, 2, 3]
var len = arr.length
// for break
for (var i = 0; i < len; i++) {
for (var j = 0; j < 3; j++) {
console.log(arr[i] + '-' + j)
if (j === 1) {
break
}
console.log(arr[i] + '-' + j)
}
}
// 输出
// 1-0
// 1-0
// 1-1
// 2-0
// 2-0
// 2-1
// 3-0
// 3-0
// 3-1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
如果不加 label 标记, break 跳出本次循环并执行循环体后的代码, 也就是本例的第二层循环.
# 2. continue :
var arr = [1, 2, 3]
var len = arr.length
// for continue
for (var i = 0; i < len; i++) {
for (var j = 0; j < 3; j++) {
console.log(arr[i] + '-' + j)
if (j === 1) {
continue
}
console.log(arr[i] + '-' + j)
}
}
// 输出
// 1-0
// 1-0
// 1-1
// 1-2
// 1-2
// 2-0
// 2-0
// 2-1
// 2-2
// 2-2
// 3-0
// 3-0
// 3-1
// 3-2
// 3-2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
如果不加 label 标记, continue 结束本次循环执行下一次循环(都是针对第二层)
tips: for 循环里不能有 return !
# forEach
# 1. return false :
var arr = [1, 2, 3]
arr.forEach(function(value, index) {
console.log(arr[index])
if (index === 1) {
return false
}
console.log(arr[index])
})
// 输出
// 1
// 1
// 2
// 3
// 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
结束本次循环执行下一次循环
# 2. return true :
var arr = [1, 2, 3]
arr.forEach(function(value, index) {
console.log(arr[index])
if (index === 1) {
return true
}
console.log(arr[index] + 10)
})
// 输出
// 1
// 1
// 2
// 3
// 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
forEach return true
结束本次循环执行下一次循环
tips: forEach 循环里不能有 break 或 continue !
# Array.map
map 和 forEach 差不多, 区别是 map 的返回值是一个数组
# for...in
# 1. break
var arr = [1, 2, 3]
for (var i in arr) {
console.log(typeof i)
console.log(arr[i])
if (i == 1) {
break
}
console.log(arr[i])
}
// 输出
// string
// 11
// 11
// string
// 12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for...in 中 break 跳出本次循环并执行循环体后的代码, 和 for 一样
# 2. continue
var arr = [1, 2, 3]
for (var i in arr) {
console.log(arr[i])
if (i == 1) {
continue
}
console.log(arr[i])
}
// 输出
// 1
// 1
// 2
// 3
// 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for...in 中 continue 结束本次循环执行下一次循环, 和 for 一样
tips: 当有 return 时会报错
# for...of
# 1. break
var arr = [1, 2, 3]
for (var i of arr) {
console.log(typeof i)
console.log(i)
if (i === 2) {
break
}
console.log(i)
}
// 输出
// number
// 1
// 1
// number
// 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for...of 中 break 跳出本次循环并执行循环体后的代码, 和 for 一样
需要注意的是这里的 i 是 arr 的 value 而不是 index
# 2. continue
var arr = [1, 2, 3]
for (var i of arr) {
console.log(i)
if (i === 2) {
continue
}
console.log(i)
}
// 输出
// 1
// 1
// 2
// 3
// 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for...of 中 continue 结束本次循环执行下一次循环, 和 for 一样
tips: for...of 循环里不能有 return ! 第一个参数是数组的值不是索引
# $.each
# 1. return false
var arr = [1, 2, 3]
$.each(arr, function(index, value) {
console.log(value)
if (index === 1) {
return false
}
console.log(value)
})
// 输出
// 1
// 1
// 2
// [1,2,3]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
跳出本次循环并执行循环体后的代码
# 2. return true
var arr = [1, 2, 3]
$.each(arr, function(index, value) {
console.log(value)
if (index === 1) {
return true
}
console.log(value)
})
// 输出
// 1
// 1
// 2
// 3
// 3
// [1,2,3]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
结束本次循环执行下一次循环
tips: $.each 循环里不能有 break 或 continue !
编辑 (opens new window)
上次更新: 5/27/2023, 1:02:05 PM