Henry Henry
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)

Henry

小学生中的前端大佬
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)
  • JavaScript

    • js 编码指南
    • 日期使用斜杠 点 中划线分隔的不同
    • forEach 会改变原数组值吗
    • 前端表单验证常用的正则表达式 - reg
    • JS 如何取得 URL 里的参数
    • JavaScript 数组去重
    • JavaScript 循环中断研究与总结-关键字篇
    • JavaScript 循环中断研究与总结-用法篇
      • 结论
      • for
        • 1. break :
        • 2. continue :
      • forEach
        • 1. return false :
        • 2. return true :
      • Array.map
      • for...in
        • 1. break
        • 2. continue
      • for...of
        • 1. break
        • 2. continue
      • $.each
        • 1. return false
        • 2. return true
    • js 中的 Error
    • 跳出 forEach
    • Location 对象
    • Date 方法预览
    • Reg 正则中的问题
    • JavaScript toFixed() 方法
    • query 和 params 的使用区别
    • axios post 请求中下载文件流
    • 实用的 js 技巧
    • JS 之数组的几个不 low 操作
    • 深入浅出深拷贝与浅拷贝
    • 如何实现一个深拷贝
    • 使用 iframe 中的一些问题
    • 在 js 中更好地使用数组
    • echarts 在坐标轴两侧各增加一格坐标
    • 从头认识js的事件循环模型
    • moment 根据周截至日算出指定月有几周及开始结束日期
    • 正则 reg 中 /number 的用法
    • 正则 reg 中 match 和 exec 异同
  • TypeScript

  • Vue

  • ElementUI

  • React

  • AntD

  • 前端
  • JavaScript
Henry
2018-03-11
目录

JavaScript 循环中断研究与总结-用法篇

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

# 结论

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

如果不加 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

如果不加 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. 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

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

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

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

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

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

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

tips: $.each 循环里不能有 break 或 continue !

编辑 (opens new window)
#Js
上次更新: 5/27/2023, 1:02:05 PM
JavaScript 循环中断研究与总结-关键字篇
js 中的 Error

← JavaScript 循环中断研究与总结-关键字篇 js 中的 Error→

最近更新
01
version 1.15
07-01
02
version 1.14
06-27
03
version 1.13
06-27
更多文章>
Theme by Vdoing | Copyright © 2017-2023 HenryTSZ | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式