# while
`for`循環在已知循環的初始和結束條件時非常有用。而上述忽略了條件的`for`循環容易讓人看不清循環的邏輯,此時用`while`循環更佳。

`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`循環的唯一區別在于,不是在每次循環開始的時候判斷條件,而是在每次循環完成的時候判斷條件:

~~~
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快速入門