• 循环/迭代: 将一个动作执行N次, 每重复一次执行就称为一次循环/迭代
  • 下面逐一介绍JavaScript中提供的循环语句

    for 语句 — 先判断再执行

  • 一个 for 循环会一直重复执行, 直到指定的循环条件为 false

  • 常用于一些可预计执行次数的循环
  • 基本格式如下:

    1. for([initialExpression]; [condition] ; [incrementExpression])
    2. statement
  • initialExpression: 用于写初始化表达式, 整个 for 语句的执行过程中只在一开始被执行一次, 可省略不写

  • condition: 用于写条件表达式, 当 condition 的值为真时, statement这部分将被再次执行, 如 condition 的值为假, 则结束 for 循环. 可省略不写, 此时默认 condition=true
  • incrementExpression: 用于写更新表达式, 一般是让 condition 的值为假, 能跳出循环的可能
  • statement: 每一次循环重复执行的内容, 超过一条语句时, 使用花括号 {} 括起

    1. for(let i=0; i<5; i++) {
    2. console.log(i)
    3. }

    do…while 语句 — 先执行再判断

  • do…while 语句一直重复直到指定的条件求值为假

  • 基本格式如下:

    1. do
    2. statement
    3. while (condition);
  • 各部分解释与 for 循环处相同

  • do…while 语句最后还有一个分号 ;

    while 语句 — 先判断再执行

  • 一个 while 语句只要指定的条件求值为真, 就会一直执行它的语句块

  • 常用于一些不可预计次数的循环或是伪无穷循环(通过用户操作后跳出的那种)
  • 基本格式如下:

    1. while(condition)
    2. statement
  • 各部分解释与 for 循环处相同

    label 语句

  • 使用 label 标识一段代码(块?), 能让其他位置在调用的时候更方便

  • 基本格式如下:

    1. label:
    2. statement
  • 一个简单的用法 (忘记是哪种语言了, break [n]; 语法可以直接 break 2; 跳出2层循环的) ```javascript loop_1: for(let i=1; i<5; i++) { for(let j=1; j<5; j++) {

    1. if(i*j>10) {
    2. console.log(`i=${i}, j=${j}`)
    3. break loop_1; // 本来是终止 第i次j循环, 现在终止整个 i循环

    } } }

/ 第6行代码为 break 时, 输出结果为: i=3, j=4 i=4, j=3 第6行代码为 break loop_1 时, 输出结果为: i=3, j=4 /

  1. <a name="iuChF"></a>
  2. # break 语句
  3. - 立刻终止当前所在的循环. 当后面有 label 时, 则终止其 label 标记的语句(块?)
  4. - 基本格式如下:
  5. ```javascript
  6. break [label];

continue 语句

  • 立刻终止本次循环, 开始下一次循环. 当后面有 label 时, 则会对该标记语句执行原效果
  • 基本格式如下:

    1. continue [label];
  • 一个 continue loop_1 的例子 (刚刚开始的 j循环才执行到5, 6行, 就结束了一次i循环, 所以结果是这个) ```javascript loop_1: for(let i=0; i<5; i++) { console.log(‘i=’+i) for(let j=0; j<5; j++) {

    1. if(i*j<10) {
    2. continue loop_1;

    } console.log(i=${i}, j=${j}) } }

/ i=0 i=1 i=2 i=3 i=4 /

  1. <a name="Nq82Q"></a>
  2. # for...in 语句
  3. - 循环一个指定的变量来循环一个对象所有可枚举的属性, 循环遍历的结果是数组元素的下标
  4. - 基本格式如下
  5. ```javascript
  6. for(variable in object) {
  7. statements
  8. }
  • 一个小例子 ```javascript (function main(){ let obj = { name: ‘ming’, age: 18, sex: ‘nan’ }

    for(let key in obj) { console.log(key, ‘=’, obj[key]) } })()

/ name = ming age = 18 sex = nan /

  1. <a name="Wo6MB"></a>
  2. # for...of 语句
  3. - for...of 语句在可迭代对象 (包括Array/Map/Set/arguments 等等)上创建了一个循环, 对值的每一个独特属性调用一次迭代 -- MDN
  4. - **for...of 语句并不能对对象类型(Object)数据使用, for...in语句倒是不会, 关于这点本人暂时也没搞明白**
  5. - 循环遍历的结果是元素的值
  6. - 基本格式如下
  7. ```javascript
  8. for(variable of object) {
  9. statements
  10. }
  • 一个小例子 ```javascript (function main(){ let arr = [‘ming’, 18, ‘nan’]

    for(let value of arr) { console.log(value) } })()

/ ming 18 nan / ```