流程控制(顺序结构+分支结构+循环结构)

125 阅读3分钟

流程控制

流程控制就是来控制我们的代码按照什么结构顺序执行

流程控制主要有三种结构:顺序结构 分支结构和循环结构

顺序流程控制

顺序结构程序中最简单最基本的流程控制,它没有特定的语法结构,程序会按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的.

流程控制-分支

分支结构: 由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果

js语言提供了两种分支结构语言:if语句和switch语句

if语句

语法结构

if(条件表达式){条件成立执行的代码语句}

执行思路:

如果if里面的条件表达式结构为真true则执行大括号里面的执行语句,如果if条件表达式结果为假,则不执行大括号里面的语句,则执行if语句后面的代码

 案例1进入网吧
 var age=prompt('请输入您的年龄')
 if(age>=18){alert('可以进出网吧')}

if else语句

语法结构:

if(条件表达式){ 执行语句1 } else{ 执行语句2 }

执行思路:如果满足条件表达式1结果为真,如果不满足条件表达式1那么执行语句3

案例进入网吧
var age=prompt('请输入您的年龄')
if(age>=18){alert('可以进出网吧')}
else if(age>=90>){alert('不建议您进入网吧')}
else{alert('18以下不能进网吧')}
案例算闰年
var date=prompt('查询闰年')
if(date/4===0&&date/100!==0||date/400===0){console.log(date+'是闰年')}
else{console.log(date+'不是闰年')}

if else if多分支语句

多分支语句就是利用多个条件来选择不同的语句执行,得到不同的结果,多选1的过程

语法规范:

if(条件表达式1){语句1} else if(条件表达式2){语句2} else if(条件表达式3){语句3} else{ 最后的语句}

执行思路: 如果满足条件表达式1,满足就执行语句1,退出整个if分支语句

如果满足条件表达式1不满足,则判断条件表达式2,满足的话,执行语句2,退出整个if分支语句

如果满足条件表达式2不满足,则判断条件表达式3,满足的话,执行语句3,退出整个if分支语句

如果上面所有条件都不满足,则执行else里面的语句

注意点:

1.多分支语句还是多选1,最后只能有一个语句执行

2.else if里面的条件理论上是可以任意多个的

3.else if中间有个空格

<!--案例判断成绩级别  -->
<!-- 90分以上(含90)A 80~90(不含90)分B, 70~80(不含80)分C,60~70(不含70)分D,60分以下(不含60)E -->
var g=prompt('请输入你的成绩')
if(g>=90){alert('A')}
else if(g>=80){alert('B')}
else if(g>=70){alert('C')}
else if(g>=60){alert('D')}
else{alert('E')}

三元表达式

定义:由三元运算符组成的式子我们称为三元表达式

语法结构: 条件表达式?表达式1:表达式2

执行思路:

如果条件表达式结果为真则返回表达式1的值,如果条件表达式结果为假,则返回表达式2的值

/* 数字补0案例 */
/* 用户输入数字,如果数字小于10,则在前面补0,比如01,09,如果数字大于10,则不需要补,比如20 */
var num=prompt('请输入数字')
num<10 ? alert(0+num) : alert(num)

switch语句(也是分支语句)

它用于基于不同的条件来执行不同的代码,当要针对变量设置一系列的特定值的选项时,就可以使用switch

语法结构: switch(转换开关的意思)case(例子选项意思)

switch(表达式){

case value1:

执行语句1;

break;

case value2:

执行语句2;

break;

default:

执行最后的语句

}

!!!!!注意表达式的值与value的值要数据类型和数值要完全一样

执行思路:利用我们表达式的值和case后面的选项值匹配,如果匹配上,就执行该case里面的语句,如果没有匹配上,那么执行default里面的语句

注意事项:

1.我们在开发里面表达式经常写成表量

2.表达式的值与value的值要全等,必须是数据类型和数值要完全一样

3.break如果当前的case里面没有break,则不会突出switch是继续执行下一个case

  switch (2) {
     case 1:console.log('这是1');
     break ;
     case 2:console.1og('这是2' );
     break;
     case 3:console.1og('这是3' );
     break;
     default:console. log( '没有匹配结果' );
     }
/* 查询水果案例 */
/* 用户在弹出框里面输入一个水果,如果有就弹出该水果的价格,如果没有该水果就弹出没有该水果 */
var na=prompt('查询水果的价格')
switch(na){
  case '西瓜':alert('西瓜2.98元/斤')
  break;
  case '桃子':alert('桃子4.98元/斤')
  break;
  case '香蕉':alert('香蕉6.98元/斤')
  break;
  default:alert('没有此水果')
}
/* 根据月份输出对应的天数 */
       /*      var day = prompt('**月有多少天')
      switch (day) {
          case '1':
              console.log('有31天')
              break;
          case '2':
              console.log('有28天')
              break;
          case '3':
              console.log('有31天')
              break;
          case '5':
              console.log('有31天')
              break;
           case '7':
              console.log('有31天')
              break;
          case '8':
              console.log('有31天')
              break;
          case '10':
                console.log('有31天')
              break;
          case '12':
               console.log('有31天')
              break;
          default:
              console.log('有30天')
      }
      var date = prompt('**月有多少天')
      switch (date) {
          case '1':
          case '3':
          case '5':
          case '7':
          case '8':
          case '10':
          case '12':
              console.log('有31天')
              break;
          case '2':
                console.log('有28天')
              break;
          case '4':
          case '6':
          case '9':
          case '11':
              console.log('有30天')
              break
      } */

if else if语句与switch语句的区别

1.一般情况下,它们两个语句可以互相替换

2.switch..case语句通常处理case为比较确定的值的情况,而if..else语句更加灵活,常用于范围判断(大于等于某个范围)

3.switch语句进行条件判断后直接执行到程序的条件语句,效率更高,而if..else语句有几种条件,就得判断多少次

4.当分支比较少的时候if..else语句的执行效率比switch语句高

5.当分支比较多时,switch语句的执行效率更高,而且结构更清晰

流程控制-循环

循环的目的:可以重复执行某些代码

JS中主要有for循环/while循环/do..while循环

循环体和循环语句

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

for循环

1.for重复执行某学代码,通常跟计数有关

2.语法结构:

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

3.初始化变量就是用var声明的一个普通变量,通常用于作为计数器使用的

4.条件表达式就是用来决定每一次循环是否继续执行,就是终止的条件

5.操作表达式时每次循环最后执行的代码,经常用于我们计数器变量进行更新(递增或者递减)

6.执行过程

for(var i=1;i<=100;i++){console.log('你好吗')}

a.首先执行里面的计数器变量 var i=1,但是这句话在for里面只执行一次,index

b.去i<=100来判断是否满足条件,如果满足条件,就去执行循环体,不满足条件就退出循环

3.最后去执行i++ i++时单独写的代码递增,第一轮结束

4.接着去执行i<=100如果满足条件,就去执行循环体,不满足退出循环

for(var i=1;i<=100;i++){
  if(i==1)
  {console.1og('这个人今年1岁了,他出生了');}
  elseif(i==100)
  {console.log('这个人今年100岁了,他死了');} 
  else
  {console.log('这个人今年’+ i + '岁了');}
  }
/* 案例求1-100之间整数之和 */
var sum=0
for(var a=1;a<=100;a++)
{sum=sum+i}
console.log(sum)
/* 案例求1-100之间所有数平均值 */
var sum=0
var average=0
for(var a=1;a<=100;a++){sum+=i}
average=sum/100
console.log(average)
/* 案例求1-100之间所有偶数和奇数和 */
var even=0
var odd=0
for(var i=1;i<=100;i++){
  if(i%2===0){even=even+i}
  else{odd=odd+i}
}
console.log('1-100之间所有的偶数和是'+even)
console.log('1-100之间所有的奇数和是'+odd)

/* 案例求1-100之间所有能被3整除的数字的和 */
var sum=0
for(var i=1;i<=100;i++){
  if(i%3===0){sum=sum+i}
  }
console.log('1-100之间能被3整除的数字之和为'+sum)
// 水仙花数是指三位数各个位置数字3次方的和等于本身,那么这个数就是水仙花数
// 案例求100-1000之间的水仙花数
for (i = 100; i < 1000; i++) {
  var gw = i % 10
  var sw = parseInt(i / 10 % 10)
  var bw = parseInt(i / 100)
  var sum = gw ** 3 + sw ** 3 + bw ** 3
  if (sum === i) {
      console.log(i + '是水仙花数');
     }
  }

双重for循环

1.语法结构:

for(外层的初始化变量;外层的条件表达式;外层的操作表达式){

for(里层的初始化变量;里层的条件表达式;里层的操作表达式){

执行语句;

}

}

2.我们可以把里面的循环看做是外层的执行语句

3.外层循环循环一次里面的循环执行全部

4.案例打印五行五列星星

var str='';
for(var i=1;i<=5;i++){
for(var j=1 j<=5;j++){
   str=str+'⭐'
}
str=str+'\n';
}
console.log(str)
/* 倒三角案例 */
var str = ''
for (i = 1; i <10; i++) {
for (a = i; <= 10; a++) { str = st+ '⭐';}
str += '\n';
}
console.log(str);
/* 正三角案例 */
var str = ''
for (i = 1; i <10; i++) {
for (a = 1; <= i; a++) {
str = st+ '⭐';}
str += '\n';
}
console.log(str);

while循环

1.语法结构

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

2.执行思路:

当条件表达式结果为true则执行循环体,否则退出循环体

3.里面应该也有计数器初始化变量

4.里面应该也有操作表达式完成计数器的更新,防止死循环

 1.初始化
 2.条件判断
 3.要执行的代码
 4.改变自身(改变初始化的内容)
 一.while循环
 语法:while(条件){满足条件时执行的代码,} */
 // 举例1
 var num = 0 /* 初始化 */
 while (num < 1000) {/* 2小括号内的是条件判断 */
     console.log(1)/* 3.要执行的代码 */
     num++;/* 4.改变自身 */
 }
 /* 计算1-100之间的数字求和 */
 var shu = 1
 var sum = 0
 while (shu <= 100) {
     sum = sum + shu/* sum+=shu */
     shu++
 }
 console.log(sum);
 /* 解析
 第一次执行的时候 shu=1 sum=0
 判断shu是否小于等于100,是的话往下执行
 sum重新赋值为0+1=1
  shu++   自增shu变为1
 第二次执行的时候 shu=2 sum=1
 判断shu小于等于100,是,往下执行
 sum=2+1 结果为3
 shu++ shu=2
 第三次执行的时候 shu=2 sum=3
 判断shu是否小于等于100,是,往下进行
 sum=2+3 结果为5
 shu++ shu=3
  */

do while循环

1.语法结构:

do{ 循环体 }while(条件表达式)

2.执行思路:

跟while不同的地方在于do while先执行一次循环体,再判断条件,如果条件为真,则继续执行循环体,否则退出循环体

3.dowhile至少执行一次循环体

/* do while循环
 是一个类似while循环语句
 while循环在开始的时候先判断条件是否成立,然定是否执行代码
  do ..while循环在开始次的时候,不会判断条件,是说,不管条件成不成立,次都会执行 */
 // while循环
 var day = 10
 while (day < 10) {
     console.log(day)
      day--
 }
 // do..while循环
 var date = 10
 do {
     console.log(date)
     date--
 } while (date < 5)
 /* do...while循环的时第一次的时候不会管这个是否成立,一定会执行一次
 第一次执行(忽略条件, 执行代码)
 date === 10
 因为第一次执行不需要判件, 所以直接执行代码
 consoLe.Log(date)---10
 date-- 后续使用date候,date的值就已经变化了,自减1
 判晰条件:date<5才能进一轮循环
 此时date的值是10,不满件,所以循环到此结束*/

循环小结

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

  1. while. do while可以做更复杂的判断条件比for循环更灵活些

3.while和do while执行顺序不一样,while先判断后执行,do while先执行一次,再判断执行

4.while和do while执行次数不一样,while至少执行一次循环体,而while可能一次不执行

continue和break

continue关键字用于立即跳出本次循环,继续下一次循环(本次循环中continue之后的代码就会少执行一次) break关键字用于立即跳出整个循环(循环结束)

// 1.break(结束掉整个循环,不管循环后边还有多少轮)
  // 2continue(跳出当前这一轮循环,直接开始下一轮循环)
   // 1break
 /* 有五个包子,吃完三个之后吃饱了,不再继续吃第4 个包子 */
 for (i = 1; i <= 5; i++) {
     console.log('我吃了一个包子');
       if (i === 3) { break }
 }
   // 2.continue
 // 有五个包子,当我吃到第三个包子的时候第三个包子上了,我要继续吃第四第五个包子
   for (a = 1; a <= 5; a++) {
     if (a === 3) {
         console.log('第三个包子不吃因为掉地上了');
         continue
       }
       console.log('我吃了一个包子');
 }
// continue案例求1~100之间,除了能够被7整除之外的整数和
var sum=0
for(var a=1;a<=100;a++>){
  if(a%7===0){continue;}
  sum+=a
}
console.log(sum)