04.流程控制语句

一.程序的执行顺序

  • 在程序开发中,程序有三种不同的执行方式:
    • 顺序 —— 从上向下,顺序执行代码
    • 分支 —— 根据条件判断,决定执行代码的 分支
    • 循环 —— 让 特定代码 重复 执行

image-20210512103808539

  • 代码块是多行执行代码的集合,通过一个{}放到了一起
    • 在开发中,一行代码很难完成某一个特定的功能,我们就会将这些代码放到一个代码块中

image-20210512103850007

二.分支语句

2.1 if分支

if分支结构有三种:

  • 单分支结构
    • if..
  • 多分支结构
    • if..else..
    • if..else if..else..

2.1.1 单分支if

image-20210512104407101

image-20210512104505777

  • 案例一:如果小明考试超过90分, 就去游乐场“如果”相当于JavaScript中的关键字if分数超过90分是一个条件(可以使用 > 符号)
  • 案例二:单位5元/斤的苹果,如果购买超过5斤,那么立减8元注意:这里我们让用户输入购买的重量,计算出最后的价格并且弹出结果

2.1.2 多分支if…else

  • 多分支语句一: if.. else..
    • image-20210512105336554
    • image-20210512105343375
  • 案例一:如果分数超过90分去游乐场,否则去上补习班
    • 满足条件时,做某些事情
    • 不满足(else),去做另外一些事情
  • 案例二:m=20,n=30,比较两个数字的大小,获取较大的那个数字

2.1.3 多分支if…elseif…else

  • 案例一:陪女朋友过节日
    • 定义 holidayName 字符串变量记录节日名称
    • 如果是 情人节 应该 买玫瑰/看电影
    • 如果是 平安夜 应该 买苹果/吃大餐
    • 如果是 生日会 应该 买蛋糕 / 开Party
    • 其他的日子, 上班工作
  • 案例二: 分数评级:
    • 考试分数大于90:优秀
    • 大于80小于等于90:良好
    • 大于60小于等于80:合格
    • 小于60分:不及格

2.1.4 隐式Boolean类型转化

  • 在开发中,流程控制语句会把括号中的表达式的值隐式转换成布尔类型。
  • 注意五种特例:0,”,NaN,undefined,null,转换成布尔类型的结果都是false。

2.2 switch分支

  • switch是分支结构的一种语句:
    • 它是通过判断表达式的结果是否等于case语句的常量,来执行相应的分支体的
    • 与if语句不同的是,switch语句只能做值的相等判断(使用全等运算符 ===),而if语句可以做值的范围判断
  • case穿透问题:
    • 一条case语句结束后,会自动执行下一个case的语句
    • 这种现象被称之为case穿透
  • break关键字
    • 通过在每个case的代码块后添加break关键字来解决这个问题
  • 案例:陪女朋友过生日的案例(通过switch实现)
    • image-20210512110603780
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>条件语句</title>
  <script type="text/javascript">
  /* 
  条件语句:
  1.if语句:省略
  2.switch...case语句
  */
 /* 
 练习:输出成绩大于60分合格,低于60分不合格
 */
var score=parseInt(64/10);
switch(score){
  case 10:
  case 9:
  case 8:
  case 7:
  case 6:
  document.write("合格");
   break;
  case 5:
  case 4:
  case 3:
  case 2:
  default:
    document.write("不合格");
    break;
}
//console.log(score);
var score1=54;
switch(true){
//case parseInt(score1/10)>=6:
case score1>=60:
  document.write("合格");
  break;
default:
  document.write("不合格");
  break;
}
  </script>

</head>
<body>
  
</body>
</html>
复制代码

三.循环语句

  • 为什么需要循环?
    • 循环可以减少书写某些重复代码.(重复的代码会造成代码的混乱和工作量的增加)
    • 例如: 打印100次HelloWorld/打印从0 ~ 99的数字/计算1~100的和
    • 如果按照我们之前的方式, 一个个打印, 非常麻烦. 但是使用循环可以很容易的做到
    • 这也正是最能发挥计算机作用的地方, 让计算机帮助我们做重复的枯燥工作
  • 在JavaScript中,常用的循环语句:
    • while循环
    • do..while循环
    • for循环

3.1 while循环

  • 语法:

    • 初始化语句;
      while(条件表达式){
          语句;
          更新表达式;
      }
      复制代码
  • 和if一样while中的条件表达式将会被转换为布尔类型,只要该值为真,则代码块将会一直重复执行。

  • 代码块每执行一次,条件表达式将会重新计算。

  • 条件表达式为true的while循环为死循环,可以使用break来终止

image-20210512111610350

image-20210512111622792

3.2 do…while循环

  • 语法:

    • do{
      执行语句
      }while(条件表达式);
      复制代码
  • do…while和while非常类似,只不过它会在循环的尾部而不是顶部检查表达式的值。

  • ==do…while循环会至少执行一次。==

  • while和do···while区别:while先判断,再执行;而do…while是先执行,再判断

image-20210512111652595

image-20210512111707148

3.3 for循环

  • for语句也是循环控制语句,我们也称它为for循环。

  • 大部分循环都会有一个计数器用以控制循环执行的次数,计数器的三个关键操作是初始化、检测和更新。for语句
    就将这三步操作明确为了语法的一部分。

  • 语法:

    • for(初始化表达式 ; 条件表达式 ;  更新表达式){
            语句...
      }
      复制代码
  • for循环是开发中使用最多的循环语句:

    • 语句一:初始化表达式:通常会写var i=1
    • 语句二:条件表达式,用于判断进行条件判断
    • 语句三:自增、减表达式,比如i++或i–

image-20210512111914600

3.3.1 循环练习

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>循环语句</title>
  <script type="text/javascript">
/* 
练习:年利率为5%,从1000块到5000块要几年?
*/
var money=1000;
/* var num=0;
while(true){
  money+=0.05*money;
  num++;
  if(money>=5000){
    break;
  }
} 
console.log(num);//33*/
var year=0;
do{
   money+=0.05*money;
   year++;
   if(money>=5000){
    break;
   }
  }while(true);
  console.log(year);//33

  </script>
</head>
<body>
  
</body>
</html>
复制代码

3.3.2 for循环的变种写法

var j = 1;
for (; j < 11;) {
  document.write(j + '&nbsp;');
  j++;
}
document.write("<hr/>");

var j = 1;
var count = 0;
for (; j;) {
  //document.write(j+'&nbsp;');
  if (count == 10) {
    document.write('count=' + count);
    break;
  }
  document.write(j + '&nbsp;');
  count++;
  j++;
}
document.write("<hr/>");



var j = 1;
var count = 0;
for (; j;) {
  document.write("a" + '&nbsp;');
  count++;
  if (count == 10) {
    j = 0;
  }
}
复制代码

3.3.3 多重for循环练习

/*双层for循环*/
//九九乘法表
for (var i = 1; i < 10; i++) { //控制行数
  for (var j = 1; j <= i; j++) { //控制列数
    document.write(i + '*' + j + '=' + i * j + '&nbsp;');
  }
  document.write("<br/>");
}
document.write("<hr/>");

//打出菱形
for (var i = 1; i <= 4; i++) { //控制输出行数
  for (var k = 1; k <= 4 - i; k++) { //此处循环用来控制前面的空白;
    document.write("&nbsp;&nbsp;&nbsp;");
  }
  for (var j = 1; j <= 2 * i - 1; j++) { //控制列数
    document.write("@");
  }
  document.write("<br/>"); //换行
}
for (var i = 3; i >= 1; i--) {
  for (var k = 1; k <= 4 - i; k++) {
    document.write("&nbsp;&nbsp;&nbsp;");
  }
  for (var j = 1; j <= 2 * i - 1; j++) {
    document.write("@");
  }
  document.write("<br/>");
}
document.write("<hr/>");
复制代码

五. break和continue关键字

  • 循环的跳转

    • 在执行循环过程中, 遇到某一个条件时, 我们可能想要做一些事情
    • 比如循环体不再执行(即使没有执行完), 跳出循环
    • 比如本次循环体不再执行, 执行下一次的循环体
  • 循环的跳转控制

    • break: 直接跳出循环, 循环结束
      • break 某一条件满足时,退出循环,不再执行后续重复的代码
    • continue: 跳过本次循环次, 执行下一次循环体
      • continue 某一条件满足时,不执行后续重复的代码
  • break 和 continue 语句用于在循环中精确地控制代码的执行。

  • 使用break语句会使程序立刻退出最近的循环,强制执行循环后边的语句。

  • break语句只在循环和switch语句中使用。

  • 使用continue语句会使程序跳过当次循环,继续执行下一次循环,并不会结束整个循环。

  • continue只能在循环中使用,不能出现在其他的结构中。

六.断点调试

  • 在开发中,为了获取一个变量的值,我们可以通过打印到控制台
    • 但是,查看一个变量的变化,我们可以通过断点调试
    • 断点调试也被称为debug
  • 开启断点调试常见的有两种方式:
    • 方式一:找到自己的源代码,在其中打断点
    • 方式二:在代码中写上debugger
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享