For 循环/While 循环
# 循环语句
迭代语句又叫循环语句
### 不同类型的循环
JavaScript 支持不同类型的循环:
- for - 多次遍历代码块
- for/in - 遍历对象属性
- while - 当指定条件为 true 时循环一段代码块
- do/while - 当指定条件为 true 时循环一段代码块
# for 循环
## for 语句
**语法**
```
for (expr1;expr2;expr3) {
**语句块**
}
```
### 语句 1(expr1)
通常,您会使用语句 1 来初始化循环中所使用的的变量(i = 0)。
但情况并不总是这样,JavaScript 不会在意。语句 1 是可选的。
您可以在语句 1 中初始化多个值(由逗号分隔);
### 语句 2(expr2)
通常语句 2 用于计算初始变量的条件。
但情况并不总是这样,JavaScript 不会在意。语句 2 也是可选的。
如果语句 2 返回 true,那么循环会重新开始,如果返回 false,则循环将结束。
如果省略语句 2,那么必须在循环中提供一个 break。否则循环永远不会结束。请在下一章阅读更多关于 break 的内容。
### 语句 3(expr3)
通常语句 3 会递增初始变量的值。
但情况并不总是这样,JavaScript 不会在意。语句 3 也是可选的。
语句 3 可做任何事情,比如负递增(i--),正递增(i = i + 15),或者任何其他事情。
语句 3 也可被省略(比如当您在循环内递增值时);
for 循环语句的流程控制示意如图所示。
::: hljs-center

:::
### 实例
```
for(let i = 0,i < 5,i++){
console.log(i); //输出0、1、2、3、4
}
```
## for/in 语句
for/in 语句遍历对象的属性。
for/in 语句是 for 语句的一种特殊形式。
**语法**
```
for ( [var] variable in <object | array){
statement
}
```
  variable 表示一个变量,可以在其前面附加 var 语句,用来直接声明变量名。in 后面是一个对象或数组类型的表达式。在遍历对象或数组过程中,把或取的每一个值赋值给 variable。
  然后执行 statement 语句,其中可以访问 variable 来读取每个对象属性或数组元素的值。执行完毕,返回继续枚举下一个元素,以此类推知道所有元素都被枚举为止。
  <font color=red>对于数组来说,值是数组元素的下标;对于对象来说,值是对象的属性名或方法名。</font>
实例
```
var person = {fname:"Bill", lname:"Gates", age:62};
var text = "";
var x;
for (x in person) {
text += person[x];
}
console.log(text); //输出 BillGates62
```
# while 循环
while 循环会一直循环代码块,只要指定的条件为 true。
## while 语句
**语法**
```
while (条件) {
要执行的代码块
}
```
::: hljs-center

:::
## do/while语句
  do/while 循环是 while 循环的变体。在检查条件是否为真之前,该循环会<font color=red>**执行至少一次**</font>,即使条件为 false,然后只要条件为真就会重复循环。
**语法**
```
do {
要执行的代码块
} while (条件);
```
