11-JavaScript基础-while循环

循环基本概念

  • 循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段, 直到条件不成立为止。

    • 给定的条件称为循环条件,反复执行的程序段称为循环体
    • 循环结构简单来说就是:一次又一次的执行相同的代码块
  • 现实生活中的循坏


  • JavaScript中的循坏

    • while语句;
    • do-while语句;
    • for语句;

while循环基本概念

  • 格式:
while ( 条件表达式 ) {
     语句1;
     语句2;
     ....
 }
  • while语句执行流程:

    • 判断条件表达式是否为真, 如果为真执行后面大括号中的内容
    • 执行完毕再次判断条件表达式是否还为真,如果为真执行后面大括号中的内容
    • 重复上述过程,直到条件不成立就结束while循环
      var num = 0;
      while (num < 10){
        alert(num); // 弹出0-9
        num++;
      }
      
  • 构成循环结构的几个条件

    • 循环控制条件(条件表达式)
      • 循环退出的主要依据,来控制循环到底什么时候退出
    • 循环体(while后面的大括号{})
      • 循环的过程中重复执行的代码段
    • 循环结束语句(递增,递减,break等)
      • 能够让循环条件为假的依据,否则退出循环
  • while循环特点:

    • 如果while中的条件一开始就不成立,那么循环体中的语句永远不会被执行
      var num = 10;
      while (num < 10){
          alert(num); // 什么都不弹
          num++;
      }
      

while循坏注意点

  • 死循环
    • 条件表达式永远为真, 循坏永远无法结束,我们称之为死循环
    while (true){
        alert("nj666");
    }
  • 任何值都有真假性
    • 对于非Boolean类型的值, 会先转换为Boolean类型再判断
    while (1){ // 先把1转换为Boolean, 然后再判断真假
        alert("nj666");
    }
  • while 后如果只有一条语句它可以省略大括号
    • 如果省略大括号, while只会管制紧跟其后的那条语句
while (0)
   alert("会执行我么?"); // 不会执行
alert("nj 666");
  • 分号问题
    • 分号(;)也是一条语句, 代表空语句
  while (0);
  {
      alert("123"); // 会被执行, 因为while管制的是分号(;)
  }
  • 最简单的死循环
    • 企业开发中慎用死循环, 会导致程序阻塞
  while (1);

while循坏练习

  • 提示用户输入一个正整数n, 计算1 + 2 + 3 + ...n的和
    • 企业开发从易到难, 先实现1加到5, 再实现1加到n
分析: 每次都是用上一次的和 加上一个递增的数
注意看, 每次加号之后的数是递增的2、3、4、5
            1 + 2 + 3 + 4 + 5 = 15
    ( 0 + 1)1 + 2
         (1 + 2)3 + 3
          1 + 2 + 3) 6 + 4
          (1 + 2 + 3 + 4) 10 + 5
    //    1.定义变量保存上一次的和
    var sum = 0;
    //    2.定义变量保存递增的数
    var number = 1;
    while (number <= 5) {
        console.log("sum = "+ sum +" + number = "+ number);
        sum = sum + number;
        number++;
    }
    console.log("sum = " + sum);
  • 累加思想
    • 通过循环的形式进行累加操作,定义变量记录每次变化后的结果

  • 获取1~100之间 7的倍数的个数并打印,并统计个数
    var count = 1;
    var num = 0;
    while (count <= 100) {

        if (count % 7 == 0) {

            console.log("count = " + count);
            num++;//计数器
        }
        count++;
    }

    console.log("number = "+ num);
  • 计数器思想:
    • 通过循环的形式进行计数操作, 通过变量记录每次变化的值
    • 企业开发中, 当遇到要求统计什么什么 中 有多少个什么的时候,立刻想到计数器思想

break关键字

  • 作用:

    • 跳出Switch语句
      var num = 1;
      switch(num){
          case 1:
              console.log("壹");// 输出壹
              break; // 跳出switch语句, 后面代码不会执行
          case 2:
              console.log("贰"); 
              break;
          default:
              console.log("非法数字");
              break;
      }
      
    • 跳出循环语句
      var num = 0;
      while(true){ 
          console.log(num);
          if(3 == num){
              break; // 当num等于3时跳出循环
          }
          num++
      }
      
  • 注意点:

    • break关键字只能用于循环语句和switch语句, 在其它地方没有意义
      break;  // 浏览器会报错
      alert("我会输出么?");
      
      if(true){
          break; // 浏览器会报错
          alert("我会输出么?");
      }
      
    • 在多层循环中,一个break语句只向外跳一层
      while (1){
          while (2){
              console.log("我是while2"); // 会被输出多次
              break; // 跳出while2,但是不会跳出while1
          }
          console.log("我是while1");
      }
      
    • break后面的语句永远不会被执行
      while (1){
          break;
          alert("会弹出来么?"); // 不会弹出
      }
      

continue关键字

  • 作用:

    • 跳过当前循环体中剩余的语句而继续下一次
      var num = 0;
      while (num < 10){
          num++;
          if(num % 2 == 0){
              continue;
          }
          console.log(num); // 1, 3, 5, 7, 9
      }
    
  • 注意点:

    • 只能用于循环结构, 在其它地方没有意义
    • continue后面的语句永远不会被执行
      while (1){
          continue;
          alert("会弹出来么?"); // 不会弹出
      }
      

dowhile循环基本概念

  • 格式
 do {
     语句1;
     语句2;
     ....
 } while ( 条件 );
  • do-while语句执行流程:

    • 首先会执行一次循环体中的语句
    • 接着判断while中的条件表达式是否为真,如果为真再次执行循环体中的语句
    • 重复上述过程,直到条件不成立就结束while循环
      var num = 20;
      do{
          console.log(num); // 输出一次10
      }while (num < 10);
    
  • while循环特点:

    • 不管while中的条件是否成立,循环体中的语句至少会被执行一遍
  • 应用场景

    • 口令校验

学习交流方式:
1.微信公众账号搜索: 李南江(配套视频,代码,资料各种福利获取)
2.加入前端学习交流群:
302942894 / 289964053 / 11550038

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • 一、简单了解和基础知识 1.js引入方式 第一种:直接在body标签下面引入js文件或者直接在下面写js代码; 第...
    空谷悠阅读 443评论 0 2
  • FreeCodeCamp - Basic JavaScript 写在前面: 我曾经在进谷前刷过这一套题,不过当时只...
    付林恒阅读 16,300评论 5 28
  • 变量 声明变量 命名变量区分大小写的语言第一个字符是字母或下划线_,数字不能作为第一个字符字符必须是字母,数字或者...
    flyingtoparis阅读 744评论 0 0
  • 转载请声明出处 博客原文 随手翻阅以前的学习笔记,顺便整理一下放在这里,方便自己复习,也希望你有也有帮助吧 第一课...
    程序员poetry阅读 12,576评论 13 94
  • 原文: https://github.com/ecomfe/spec/blob/master/javascript...
    zock阅读 3,343评论 2 36