[TOC]
# JavaScript的几种循环方式
JavaScript提供了许多通过LOOPS迭代的方法。本教程解释了现代JAVASCRIPT中各种各样的循环可能性
## 目录:
* for
* forEach
* do...while
* while
* for...in
* for...of
* for...in vs for...of
## 介绍
JavaScript提供了许多迭代循环的方法。
### for
~~~
const list = ['a', 'b', 'c']
for (let i = 0; i < list.length; i++) {
console.log(list[i]) //value
console.log(i) //index
}
~~~
* 您可以使用break中断for循环
* 您可以使用continue继续for循环的下一次迭代
### forEach
在ES5中引入。给定一个数组,您可以使用list.forEach()迭代其属性:
~~~
const list = ['a', 'b', 'c']
list.forEach((item, index) => {
console.log(item) //value
console.log(index) //index
})
//index is optional
list.forEach(item => console.log(item))
~~~
```js
const list = ['a', 'b', 'c']
list.forEach(function(item, index) {
console.log(item) //value
console.log(index) //index
})
```
> 不过需要注意的是你无法摆脱这个循环。
### do...while
~~~
const list = ['a', 'b', 'c']
let i = 0
do {
console.log(list[i]) //value
console.log(i) //index
i = i + 1
} while (i < list.length)
~~~
您可以使用break中断while循环:
~~~
do {
if (something) break
} while (true)
~~~
你可以使用continue跳转到下一个迭代:
~~~
do {
if (something) continue
//do something else
} while (true)
~~~
### while
~~~
const list = ['a', 'b', 'c']
let i = 0
while (i < list.length) {
console.log(list[i]) //value
console.log(i) //index
i = i + 1
}
~~~
您可以使用break中断while循环:
~~~
while (true) {
if (something) break
}
~~~
你可以使用continue跳转到下一个迭代:
~~~
while (true) {
if (something) continue
//do something else
}
~~~
与do...while的区别在于do...while总是至少执行一次循环。
### for...in
迭代对象的所有可枚举属性,给出属性名称。
~~~
for (let property in object) {
console.log(property) //property name
console.log(object[property]) //property value
}
~~~
### for...of
ES2015引入了for循环,它结合了forEach的简洁性和破解能力:
~~~
//iterate over the value
for (const value of ['a', 'b', 'c']) {
console.log(value) //value
}
//get the index as well, using `entries()`
for (const [index, value] of ['a', 'b', 'c'].entries()) {
console.log(index) //index
console.log(value) //value
}
~~~
注意使用const。此循环在每次迭代中创建一个新范围,因此我们可以安全地使用它而不是let。
### for...in VS FOR...OF
与for...in的区别在于:
* for...of 迭代属性值
* for...in 迭代属性名称
- 内容介绍
- EcmaScript基础
- 快速入门
- 常量与变量
- 字符串
- 函数的基本概念
- 条件判断
- 数组
- 循环
- while循环
- for循环
- 函数基础
- 对象
- 对象的方法
- 函数
- 变量作用域
- 箭头函数
- 闭包
- 高阶函数
- map/reduce
- filter
- sort
- Promise
- 基本对象
- Arguments 对象
- 剩余参数
- Map和Set
- Json基础
- RegExp
- Date
- async
- callback
- promise基础
- promise-api
- promise链
- async-await
- 项目实践
- 标签系统
- 远程API请求
- 面向对象编程
- 创建对象
- 原型继承
- 项目实践
- Classes
- 构造函数
- extends
- static
- 项目实践
- 模块
- import
- export
- 项目实践
- 第三方扩展库
- immutable
- Vue快速入门
- 理解MVVM
- Vue中的MVVM模型
- Webpack+Vue快速入门
- 模板语法
- 计算属性和侦听器
- Class 与 Style 绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
- 组件注册
- Prop
- 自定义事件
- 插槽
- 混入
- 过滤器
- 项目实践
- 标签编辑
- iView
- iView快速入门
- 课程讲座
- 环境配置
- 第3周 Javascript快速入门