2019-05-24 js第三天

循环,三元表达式和switchcase

1复习if

//条件语句:

    //  1. 单条件  if(bool){  代码块  } 

    if (2 > 1) {

      console.log('我觉得你大学不应该毕业~~~');

    }

    // 2. 二选一条件 if(bool){ if代码块 }  else{ else代码块 }

    //    如果 if小括号 中 的结果 是 true,就执行 if代码块 ,否则 执行 else 代码块

    if (1 > 2) {

      console.log('true');

    } else {

      console.log('false');

    }

    // 3. 多条件  if(bool) { 代码 }  else if(bool){ 代码 } else if(bool) { 代码 } ..... else{ }

    //    多条件中 ,如果 任意一个 if 的条件满足了,就执行 这个 if 的 代码块,后面的 判断 都不执行了,直接 执行 整个 if 结构 后面的代码!

    var salary = 5000;

    if (salary == 5000) {

      console.log('每天吃 方便面~~~');

    } else if (salary == 10000) {

      console.log('每天吃 两包方面便~~~');

    } else if (salary == 15000) {

      console.log('每天吃 农家小炒肉~~~');

    } else {

      console.log('每天吃 麻辣烫~~~');

    }

    console.log('if 主要代码复习结束~~~~');

    //4. if 嵌套 : 就在 if 的代码块 中 再写一个 if结构的代码

    if (1 > 0) {

      if (2 > 0) {

      }else if(3 > 0){

      }else{

      }

    }

2三元表达式

//1.三元运算符 ? : -》 条件 ? 代码1 : 代码2

    //1.1 简化  二选一 if结构 --------------------------------------------------------------------

    var usrName = '小苍苍';

    // if (usrName == '小苍苍') {

    //  console.log('苍苍,我们一起去看电影好吗?');

    // } else {

    //  console.log('美女,有机会一起看个电影呗~~~');

    // }

    // 如果 ? 前面 是 true,那么 就调用 : 前面的代码

    //              false,          : 后面的代码

    usrName == '小苍苍' ? console.log('苍苍,我们一起去看电影好吗?') : console.log('美女,有机会一起看个电影呗~~~');

    //1.2 三元运算符 还可以 进行 二选一 的 赋值- ---------------------------------------------------

    //    如果 ? 前面 是 true, 那么  就 将 :  前面的值 返回 给 变量 salary

    //                  false, 那么  就将  :  后面的值 返回 给 变量 salary

    var salay = usrName == '小苍苍' ? 500000 : 5000;

    // if (usrName == '小苍苍') {

    //  salay = 500000;

    // }

    // else {

    //  salay = 5000;

    // }

    // 1 > 2 ? (1 < 2 ? 1 : 2) : 3;

3   switchcase

// 1. switch case 语法 主要用来 做 变量 判等 操作

    //                    注意:switch case 中 对变量做判等 用的是 全等号 === !

    //                    补充:case 后面 可以 放 任意类型的值 与 变量 进行判等 !

    //    switch(要进行判等的 变量) {

    //        case '值1':{

    //                case1 代码块~~~~

    //                break; // 退出 整个 switch 结构

    //          }

    //        case '值2':{

    //                case2 代码块~~~~

    //                break; // 退出 整个 switch 结构

    //          }

    //        case '值3':{

    //                case3 代码块~~~~

    //                break; // 退出 整个 switch 结构

    //          }

    //        default:{

    //                default 代码块~~~~

    //          }

    // }

    // == 值判断 两边的 值是不是一样

    // === 判断 两边的值 也 会 判断 两边的 数据类型 是否一样!!

    var usrName = '小班班';

    switch (usrName) {

      case '小波波': { // 相当于 if(usrName === '小波波')

        console.log('亲,我可以亲你吗?');

        break; // 跳出 switch 结构 ,执行 switch结构 后面的代码

      }

      case '小苍苍': {

        console.log('亲,我可以抱你嘛?');

        break;

      }

      case '小泽泽': {

        console.log('亲,我可以带你去湘江边吗?');

        break;

      }

      default: {

        console.log('我不喜欢男的~~~~');

      }

    }

    console.log('我是switch结构后面的代码~~~~');

    // if(usrName == '小波波'){

    //  console.log('亲,我可以亲你吗?');

    // }else if(usrName == '小苍苍'){

    //  console.log('亲,我可以抱你嘛?');

    // }else if(usrName == '小泽泽'){

    //  console.log('亲,我可以带你去湘江边吗?');

    // }else{

    //  console.log('我不喜欢男的~~~~');

    // }

04switchcase  break

//1.switch穿透:当 case 中 没有 写 break 来 退出 整个 swtich结构时,就叫做 switch穿透。

    //              没写 break 的 case {} 代码结束后,会执行 下一个 case{} 代码块里的代码!!直到遇到 break 或 default 为止!!!

    var usrName = '小波波';

    switch (usrName) {

      case '小波波': { // 相当于 if(usrName === '小波波')

        console.log('亲,我可以亲你吗?');

        // 注意 这里 没有 写 break;

      }

      case '小苍苍': {

        console.log('亲,我可以抱你嘛?');

        break;

      }

      case '小泽泽': {

        console.log('亲,我可以带你去湘江边吗?');

        break;

      }

      default: {

        console.log('我不喜欢男的~~~~');

      }

    }

    console.log('我是switch结构后面的代码~~~~');

    //2. 合理使用switch 穿透 ----------------------------------------------

    var usrYear, usrMonth, usrDay;

    usrYear = parseInt(prompt('请输入年份:'));

    usrMonth = prompt('请输入月份:'); // '1'

    //2.判断是否为 大月

    // 【强调】switch 中的 判等 是  === ,又判断 值,也判断 类型

    switch (usrMonth) {

      case 1:

      case 3:

      case 5:

      case 7:

      case 8:

      case 10:

      case 12: {

        usrDay = 31;

        break;

      }

      case 4:

      case 6:

      case 9:

      case 11: {

        usrDay = 30;

        break;

      }

      case 2: {

        if (usrYear % 400 == 0 || (usrYear % 4 == 0 && usrYear % 100 != 0)) {

          usrDay = 29;

        } else {

          usrDay = 28;

        }

      }

      default: {

        alert('您输入的月份有误~~~可能您的身份不是地球人吧~~~');

      }

    }

    //5.如果 usrDay 已经被赋值过了,就打印出来

    if (usrDay != undefined) {

      alert('【' + usrYear + '】年【' + usrMonth + '】月有【' + usrDay + '】天');

    }

05 if else  和switch的应用场景

//1.if else

    //  if 小扩号中 可以 有 两种 代码

    //                  第1种: 直接 写 bool 值: true / false

    //                          if(true){  }

    //                  第2种:写 最终能够 返回 一个 bool值的: >  <  ==  ===  .....

    //                                                        &&  ||  !

    //                          if(1 > 2){  }

    //                          if(1 < 2 && 2 > 0 && 1 === 1){ }

    //                  第3中:隐式类型转换 ---- 补充 了解

    //                          0 -0 NaN '' null undefined 都会被 if 当成 false

    //                                            其他 都会被 if 当成 true

    //2. switch case  只有一种 代码可以 写在 switch中 : 变量 === 值1

    //                switch(变量){

    //                          case 值1:{

    //

    //                          }

    //                }

06 while 循环

//1.循环语句

    //  什么是循环: 重复的做 一样的事情!!!

    // console.log('班长在通过视频学习~~~~');

    // console.log('班长在通过视频学习~~~~');

    // console.log('班长在通过视频学习~~~~');

    //    循环的组成:  a.要循环执行的代码

    //                b.循环条件 变量

    //                c.循环条件 判断  -- 需要 写明 退出 循环的条件

    //                d.条件变量 的修改 -- 向 退出循环的条件 做 努力(满足退出条件)

    //1.1 while 循环 -----------------------------------------------------------------------------------

    // 语法: 当 while后面() 中 的布尔值 为 true,就执行 { } 里的代码,

    //                                    false,就 结束 while 循环,执行 while循环 后面的代码!!

    // while(bool){

    // }

    // 1.循环条件变量:要循环的次数

    var count = 1;

    // 2.  循环条件

    while (count <= 3) { // count = 0 , 1 ,2 , 3

      //3.循环体代码(需要重复做的事情)

      console.log('班长在通过视频学习~~~~' + count);

      //4.修改循环条件 变量

      count += 1; // 相当于 count = count + 1

    }

    console.log('循环结构后面的代码!!!' + count);

07 do while循环

//2. do while 循环

    //      会 先 将 循环代码 执行 一次,然后 再判断 是否要 进行下一次循环

    //  先斩后奏

    //案例:输出 1 - 5 之间的和

    var num = 1; // 保存 循环次数

    var sum = 0; // 保存 和 --- 箩筐变量

    do {

      console.log('num = '+num);

      // num = 1,2,3,4,5

      sum += num; // 将 num 里的数值 累加到 sum变量中!!

      //sum = 1 + 2 + 3 + 4 + 5

      num += 1; // num = num + 1

    } while (num <= 5);

    console.log('sum = ' + sum);

08 while 和do while的案例

//while循环 案例 -----------------------------------------------------------------------

    //1.接收用户输入的年龄,要求必须是数值,如果不是,则提示重新输入

    // var usrAge = parseInt(prompt('请输入年龄:')); // parseInt 转换数值时:如果 是 'aa' ,返回 NaN

    // isNaN(usrAge)  如果 usrAge 是 非数值,就返回 true

    //                              数字化,就返回 false

    // while (isNaN(usrAge)) {

    //  alert('对不起,你这个大sb,年龄怎么会是非数值呢?请重新操作!');

    //  usrAge = parseInt(prompt('请输入年龄:'));

    // }

    // alert('恭喜您,您的年龄为:【' + usrAge + '】');

    //do while循环 案例 -----------------------------------------------------------------------

    //2.接收用户名和密码,如果 等于 james  和 123 的话,则显示登陆成功~~~,如果 错误,就重新输入。

    do{

      var usrName = prompt('请输入用户名:');

      var usrPwd = prompt('请输入用户密码:');


      var isOk = usrName != 'james' || usrPwd != '123';

      if(isOk){

        alert('用户名或密码错误~~请重新输入~!');

      }

    }while(isOk); // 如果 任意一个 不正确,都重新 输入

    alert('恭喜您[' + usrName + ']~~登陆成功啦~~!');

10  for 循环 

// 循环的组成: a.要循环执行的代码

    //                b.循环条件 变量

    //                c.循环条件 判断  -- 需要 写明 退出 循环的条件

    //                d.条件变量 的修改 -- 向 退出循环的条件 做 努力(满足退出条件)


    /*

    循环步骤分解:

    for (步骤1.var i = 1; 步骤2.i <= 10; 步骤4.i += 1) {

      步骤3.console.log('i = ' + i);

    }

    执行先后顺序: 步骤1 步骤2 -> true,执行 步骤3 步骤4

                    步骤2 -> true,执行 步骤3 步骤4

                    步骤2 -> true,执行 步骤3 步骤4

                    步骤2 -> false, 就退出整个循环


    */

    // 注意:一般循环,都是 为 i  + 1,所以,可以 用 i++ 来代替 i+=1

    //      但有时候,循环不是每次 +1 的,就需要用 i += 3,而不是 i++了

    for (var i = 1; i <= 3; i++) { // i+=1 -> 相当于 i += 1  -> i = i + 1

      console.log('i = ' + i);

    }

    console.log('循环结束后:i =  ' + i);

11自增自减

//1. 复合赋值运算符

      //    +=  -=  *=  /=.....

      var a = 1;

      a += 12;// a = a + 12

      var i = 1;

      i+=1; // i = i + 1

      //2.自增自减

      //  只能 对 自己这个变量 做 +1  或 -1 的操作

      var b = 1;

      b++; // b+=1; -》 b = b + 1;

      console.log(b); // 2

      var c = 10;

      c--; // c-=1; -》 c = c - 1;

      console.log(c); // 9

12三个循环的应用场景

//1. 一般 【根据 非次数 条件】 来循环的 ,就用 while 或 do while----------------------

      //1.1 while 是 先判断 再循环

      // while(bool){ }

      //1.2 do while 是 先执行一次,在判断 要不要进行下一次循环

      //do{ }while(bool);

      //小提醒: while(bool);{} 中的 ; 不要加!!!!

      //        do{ }while(bool); 最后的; 用来表示 语句结束,要加!!!


      //2.【根据 次数 条件】来循环的,就用 for循环 ------------------------------------------

      // for(var i = 0; i < 10;i++){

      //  console.log(i);

      // }

13求最大值


//1.用 for 循环 求 1- 100 之间所有数的和

    var sumNum = 0; // 箩筐变量,用来存放 所有数 的和

    for (var i = 1; i <= 100; i++) {

      console.log('i = ' + i);

      sumNum += i; // 将 i 的值 累加到 变量 sumNum中

    }

    console.log(sumNum);

    //2.用 for 循环 求 1- 100 之间所有偶数的和

    var sumNum = 0; // 箩筐变量,用来存放 所有数 的和

    for (var i = 1; i <= 100; i++) {

      if (i % 2 == 0) {

        console.log('i = ' + i);

        sumNum += i; // 将 i 的值 累加到 变量 sumNum中

      }

    }

    console.log(sumNum);

    //3.用 for 循环 求 1- 100 之间所有奇数的和

    var sumNum = 0; // 箩筐变量,用来存放 所有数 的和

    for (var i = 1; i <= 100; i++) {

      if (i % 2 != 0) {

        console.log('i = ' + i);

        sumNum += i; // 将 i 的值 累加到 变量 sumNum中

      }

    }

    console.log(sumNum);

14求平均成绩和总成绩


//1.用户输入学生的人数,然后依次输入每一个学生的成绩,输入完毕后计算 平均成绩 和 总成绩

    /*

    思路步骤:

        a.获取 学员的总人数 --> 10

        b.使用 for 循环 接收 每位学员的成绩,并 累加到 “箩筐”变量中 -- 求 总成绩

        c.求 平均成绩

    */

    //1.总人数

    var stuNum = parseInt(prompt('请输入学员总人数:'));

    //2.循环 接收每位学员成绩,并累加到 总成绩变量中

    var scoreTotal = 0;


    for(var i = 1; i <= stuNum ; i++){

      //2.1 接收 一位学员 的成绩

      var stuS = parseInt( prompt('请输入第【' + i +  '】位学员的成绩:') );

      //2.2 累加到 总成绩中

      scoreTotal += stuS;

    }

    //3.求平均成绩

    var avgScroe = scoreTotal / stuNum;

    alert('总人数【' + stuNum + '】,总成绩【' + scoreTotal + '】,平均分【' + avgScroe + '】');

15退出循环break和continue

//循环退出: 在循环执行的过程中,遇到特殊情况,可以 直接 退出循环!!! 或 退出 本次 循环!!!

      //1.班长吃包子: 每天早上吃10个包子,第5个包子里 咬了一口后,发现 半只蟑螂!!!

      //                                                                  扔掉第5个,继续从 第6个开始吃~~~ 吃到第10个结束!!

      //2.班长 吃到 第 8个包子,发现已经吃饱了,就不再吃后面的包子了(退出整个循环!!!)

      for(var i = 1; i <= 10; i++){

        console.log('我是班长,正在吃第【' + i +  '】个包子~~~');

        if(i == 5){

          console.log('我靠~~~~ 怎么有半只蟑螂呢?!!! 不吃了这个!!扔掉喂副班长~~!');

          continue;// 【退出 本次循环】:从 continue 处  直接 调到 i++ 处运行!!!

        }

        if(i==8){

          console.log('啊,吃的好饱啊~~~不吃了,再吃就拉了~~!');

          break;

        }

        console.log('真好吃啊~~~!');

      }

      console.log('嗯,吃饱了~~~可以回家睡觉了~~!');

16双重循环嵌套

//1.使用 for循环 模拟 一周7天 上课的过程,每天 有 4节课~~~

      //a. 先模拟 天

      //b. 在模拟 每天里面的 4节课

      for(var day = 1 ; day <= 7; day++){

        console.log('啊~~~在传智播客充满激情的第【' + day + '】天开始了~~~');

        for(var classNo = 1; classNo <= 4; classNo++){

          console.log('哦~~~第【' + day + '】天的第【' + classNo + '】节课上课了~~~');

        }

        console.log('啊~~~在传智播客充满激情的第【' + day + '】天结束了~~~');

      }

17循环嵌套打印三角形

/*在页面打印如下图案,.一次只能打印一颗星星

          *

          * *

          * * *

          * * * *

          * * * * *

      */

      // console.log('*');

      // console.log('* *');

      // console.log('* * *');

      // console.log('* * * *');

      // console.log('* * * * *');

      //1.打印 五行,每行里 一个星星

      //2.每一行中 打印 和 行数相同 的 星星个数(列数)

      var strStar = '';

      for(var row = 1 ; row <= 5; row++){

        //2.2 在 每一行 中 循环生成 星星

        for(var star = 1; star <= row; star++){

          strStar += '* ';

        }

        strStar += '\n';

      }

      console.log(strStar);

你可能感兴趣的:(2019-05-24 js第三天)