我们在键盘上留下的余温, 也将随时代传递到更远的将来


:D 获取中...

上篇我们讲了 break , continue , return 这三个常用的关键字, 本篇讲一下在具体循环或函数中的用法

结论

  1. for , for...in , for...of : 当没有 label 标记时候, break 跳出本次循环并执行循环体后的代码, continue 结束本次循环执行下一次循环. 没有 return .
  2. Array.forEach : 遍历整个数组, return false 或者 return true 都是结束本次循环执行下一次循环. 没有 breakcontinue . 我想你可能需要跳出 forEach
  3. Array.map : mapforEach 类似, 有返回值, 返回结果是 return 值组成的数组.
  4. jQuery.each : return false 跳出本次循环并执行循环体后的代码; return true 结束本次循环执行下一次循环. 没有 breakcontinue .

for

1. break :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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

如果不加 label 标记, break 跳出本次循环并执行循环体后的代码, 也就是本例的第二层循环.

2. continue :

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
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

如果不加 label 标记, continue 结束本次循环执行下一次循环(都是针对第二层)

tips: for 循环里不能有 return !

forEach

1. return false :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

结束本次循环执行下一次循环

2. return true :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

forEach return true

结束本次循环执行下一次循环

tips: forEach 循环里不能有 breakcontinue !

Array.map

mapforEach 差不多, 区别是 map 的返回值是一个数组

for...in

1. break

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

for...inbreak 跳出本次循环并执行循环体后的代码, 和 for 一样

2. continue

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

for...incontinue 结束本次循环执行下一次循环, 和 for 一样

tips: 当有 return 时会报错

for...of

1. break

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

for...ofbreak 跳出本次循环并执行循环体后的代码, 和 for 一样

需要注意的是这里的 iarrvalue 而不是 index

2. continue

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

for...ofcontinue 结束本次循环执行下一次循环, 和 for 一样

tips: for...of 循环里不能有 return ! 第一个参数是数组的值不是索引

$.each

1. return false

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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]

跳出本次循环并执行循环体后的代码

2. return true

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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]

结束本次循环执行下一次循环

tips: $.each 循环里不能有 breakcontinue !


 评论

 无法加载Disqus评论系统,请确保您的网络能够正常访问。