javaScript流程控制-循环

循环

循环目的:在实际问题中,有许多具有规律性的重复操作,因此在程序中要完成这类操作就需要重复执行某些语句。

在JS中,主要有三种类型的循环语句:

1、for循环

2、while循环

3、do...while循环

for循环

概念:在程序中,一组被重复执行的语句被称之为循环体,能否接着重复执行,取决于循环的终止条件。由循环体及循环的终止条件组成的语句,被称之为循环语句。

语法结构:

// 初始化变量:可以理解为循环的开始值
// 条件表达式:可以理解为循环结束的条件
// 操作表达式:递增或则递减

for(初始化变量;条件表达式;操作表达式){
    // 循环体
}

执行过程:

1. 初始化变量,初始化操作在整个 for 循环只会执行一次。

2. 执行条件表达式,如果为true,则执行循环体语句,否则退出循环,循环结束。

3. 执行操作表达式,此时第一轮结束。

4. 第二轮开始,直接去执行条件表达式(不再初始化变量),如果为 true ,则去执行循环体语句,否则退出循环。

5. 继续执行操作表达式,第二轮结束。

6. 后续跟第二轮一致,直至条件表达式为假,结束整个 for 循环。

案例:

// for循环可以重复相同的代码 ,比如我们要输出10句“媳妇我错了”

//  基本写法
for(var i = 1; i <= 10; i++){
    console.log('媳妇我错了~');
}
// 用户输入次数
var num = prompt('请输入次数:');
for ( var i = 1 ; i <= num; i++) {
    console.log('媳妇我错了~');
} 
// for 循环还可以重复不同的代码,这主要是因为使用了计数器 ,计数器在每次循环过程中都会有变化。
// 例如,求输出一个人1到100岁:

//  基本写法
for (var i = 1; i <= 100; i++) {
      console.log('这个人今年' + i + '岁了');
}
// for 循环还可以重复不同的代码,这主要是因为使用了计数器 ,计数器在每次循环过程中都会有变化。
// 例如,求输出一个人1到100岁:

// for 里面是可以添加其他语句的 
for (var i = 1; i <= 100; i++) {
 if (i == 1) {
    console.log('这个人今年1岁了, 它出生了');
 } else if (i == 100) {
    console.log('这个人今年100岁了,它死了');
  } else {
       console.log('这个人今年' + i + '岁了');
  }
}

双重for循环

概念:很多情况下,单层 for 循环并不能满足我们的需求,比如我们要打印一个 5 行 5 列的图形、打印一个倒 直角三角形等,此时就可以通过循环嵌套来实现。

javaScript流程控制-循环_第1张图片javaScript流程控制-循环_第2张图片

循环嵌套是指在一个循环语句中再定义一个循环语句的语法结构,例如在for循环语句中,可以再嵌套一个for 循环,这样的 for 循环语句我们称之为双重for循环。

语法结构:

 for (外循环初始值; 外循环条件; 外循环的操作表达式(递增递减)) {// 外层循环
      for (里循环初始值; 里循环条件; 里循环的操作表达式(递增递减)) { // 里层循环
        // 循环体
      }
    }

1.内层循环可以看做外层循环的语句

2.内层循环执行的顺序也要遵循 for 循环的执行顺序

3.外层循环执行一次,内层循环要执行全部次数

案例:

// 打印五行五列星星
    var star = ''; // 定义空变量,来接收打印的星星
    for (var i = 0; i <= 5; i++) {
      for (var j = 0; j <= 5; j++) {
        star += '*';
      }
      star += '\n'; // 每打印一行就在后面加上换行
    }

    console.log(star); // 最后打印整体
 // 要求用户输入行数和列数,之后在控制台打印出用户输入行数和列数的星星。
    var row = prompt('请输入行'); // 接收行
    var col = prompt('请输入列'); // 接收列

    var star = ''; // 定义空变量
    for (var i = 0; i < row; i++) {
      for (var j = 0; j < col; j++) {
        star += '*';
      }
      star += '\n'; // 每循环完一次在后面加上换行
    }

    console.log(star); // 打印整体

    // 打印正三角
    var star = '';
    for (var i = 0; i < 10; i++) {
      for (var j = 0; j < i; j++) {
        star += '*';
      }
      star += '\n';
    }

    console.log(star);
 // 打印倒三角
    var star = '';
    for (var i = 0; i < 10; i++) {
      // 外层循环每循环一次i加一,可以直接作为内层循环的初始值,达到每一次外层循环内层循环减少一颗星星的效果
      for (var j = i; j < 10; j++) {
        star += '*';
      }
      star += '\n';
    }

    console.log(star);
 // 打印九九乘法表
    // 核心算法:每一行和每一列正好一致
    var star = '';
    for (var i = 1; i <= 9; i++) { // 控制行数(9行)
      for (var j = 1; j <= i; j++) { // 控制列数 列数和当次循环是一样的,j <= i;
        star += j + '×' + i + '=' + i * j + '\t';
      }
      star += '\n';
    }
    console.log(star);

九九乘法表打印结果:

javaScript流程控制-循环_第3张图片

 

for循环小结:

for 循环可以重复执行某些相同代码

for 循环可以重复执行些许不同的代码,因为我们有计数器

for 循环可以重复执行某些操作,比如算术运算符加法操作

随着需求增加,双重for循环可以做更多、更好看的效果

双重 for 循环,外层循环一次,内层 for 循环全部执行

for 循环是循环条件和数字直接相关的循环

分析要比写代码更重要

一些核心算法想不到,但是要学会,分析它执行过程

举一反三,自己经常总结,做一些相似的案例

 

while循环

概念:while 语句可以在条件表达式为真的前提下,循环执行指定的一段代码,直到表达式不为真时结束循环。 while语句的语法结构如下:

语法结构:

while (条件表达式) {
    // 循环体代码 
}

// 执行过程:先执行条件表达式,条件表达式成立则执行循环体代码,否则不执行,执行后面代码

注意:使用while循环时一定要有退出循环条件,否则会导致死循环。

与for循环的不同点:while循环可以做比较复杂的条件判断,比如判断用户名和密码。

案例:

// 打印人的一生
    var i = 1;
    while (i <= 100) {
      console.log('今年' + i + '岁了');
      i++; // 每循环一次i加一,否则会导致死循环
    }
// 计算 1 ~ 100 之间所有整数的和
    var sum = 0;
    var j = 0;
    while (j <= 100) {
      sum += j;
      j++;
    }
    console.log(sum);
// 弹出一个提示框,你爱我吗?如果输入我爱你,就提示结束,否则,一直询问。
    var message = prompt('你爱我吗?');
    while (message !== '我爱你') { // 当不是输入我爱你,就会一直循环。
      message = prompt('你爱我吗?')
    }
    // 当输入我爱你,则执行下面语句
    alert('我也爱你啊');

do while循环

概念:do... while 语句其实是 while 语句的一个变体,先执行一次循环,再判断,判断为true则接着循环,否则执行下面语句。

语法结构:

do {
    // 循环体代码 - 条件表达式为 true 时重复执行循环体代码
} while(条件表达式);

特点:至少会执行一次。

案例:

// 打印人的一生
    var i = 1;
    do {
      console.log('今年' + i + '岁了');
      i++;
    } while (i <= 100);
//  计算 1 ~ 100 之间所有整数的和
    var i = 1;
    var sum = 0;
    do {
      sum += i;
      i++;
    } while (i <= 100);

    console.log(sum);
// 弹出一个提示框, 你爱我吗?  如果输入我爱你,就提示结束,否则,一直询问。
    do {
      var message = prompt('你爱我吗?');
    } while (message !== '我爱你');
    alert('我也爱你啊');

循环小结:

JS循环中有for、while、do while

三个循环很多情况下都可以相互替代使用

如果是用来计次数,跟数字相关的,三者使用基本相同,但是我们更喜欢用 for

while 和 do…while 可以做更复杂的判断条件,比 for 循环灵活一些

while 和 do…while 执行顺序不一样,while 先判断后执行,do…while 先执行一次,再判断执行 while 和 do…while 执行次数不一样,do…while 至少会执行一次循环体, 而 while 可能一次也不执行

实际工作中,我们更常用for 循环语句,它写法更简洁直观, 所以这个要重点学习

continue break

continue关键字用于立即跳出本次循环接着下一次循环

案例:吃5个包子,第3个有虫子,就扔掉第3个,继续吃第4个第5个包子,其代码实现如下:

// 吃5个包子,第3个有虫子,就扔掉第3个,继续吃第4个第5个包子,其代码实现如下:
    for (var i = 1; i <= 5; i++) {
      if (i === 3) {
        console.log('第' + i + '个包子有虫子,扔掉');
        continue; // 跳出当前循环
      }
      console.log('正在吃' + i + '个包子');
    }

break关键字用于立即跳出整个循环(循环结束)。

案例:吃5个包子,吃到第3个发现里面有半个虫子,其余的不吃了,其代码实现如下:

// 吃5个包子,吃到第3个发现里面有半个虫子,其余的不吃了,其代码实现如下:
    for (var i = 1; i <= 5; i++) {
      if (i === 3) { // 当i等于三,跳出循环
        console.log('这是第' + i + '个包子,坏掉了不吃了');
        break;
      }
      console.log('我在吃第' + i + '个包子');
    }

你可能感兴趣的:(javaScript,javascript,开发语言)