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)
上次更新: 11/12/2020, 6:27:50 AM
- 01
- 搭配 Jenkins 实现自动化打包微前端多个项目09-15
- 02
- 自动化打包微前端多个项目09-15
- 03
- el-upload 直传阿里 oss 并且显示自带进度条和视频回显封面图06-05