# while
`for`循环在已知循环的初始和结束条件时非常有用。而上述忽略了条件的`for`循环容易让人看不清循环的逻辑,此时用`while`循环更佳。
![](https://box.kancloud.cn/9b0fd5c7361e6c0f13d62b70d33ff49a_439x412.png)
`while`循环只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现:
~~~
let x = 0;
let n = 99;
while (n > 0) {
x = x + n;
n = n - 2;
}
x; // 2500
~~~
在循环内部变量`n`不断自减,直到变为`-1`时,不再满足`while`条件,循环退出。
# do ... while
`do { ... } while()`循环,它和`while`循环的唯一区别在于,不是在每次循环开始的时候判断条件,而是在每次循环完成的时候判断条件:
![](https://box.kancloud.cn/c5c6430551259b4e0f054404fb61568b_307x427.png)
~~~
let n = 0;
do {
n = n + 1;
} while (n < 100);
n; // 100
~~~
> 用`do { ... } while()`循环要小心,循环体会至少执行1次,而`for`和`while`循环则可能一次都不执行。
## 练习
请利用循环遍历数组中的每个名字,并显示`Hello, xxx!`:
~~~
'use strict';
var arr = ['Bart', 'Lisa', 'Adam'];
~~~
请尝试`for`循环和`while`循环,并以正序、倒序两种方式遍历。
- 内容介绍
- 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快速入门