当前位置: 代码迷 >> 综合 >> week1.3流程控制语句——每天一个JS小总结
  详细解决方案

week1.3流程控制语句——每天一个JS小总结

热度:47   发布时间:2024-02-05 16:25:38.0

week1.3流程控制语句

 

选择结构

if

if...else结构体和三元表达式的功能是很像的,但是我们需要注意的是三元表达式中只能写入表达式或者值,而if...else语句中可以写入多条语句或者其他的功能性代码。功能类似但是不能等同!

if ( 条件 ){

语句 //条件为true时执行该语句

}else{

语句 //条件为false时执行该语句

}

if(10=='10'){console.log('条件为true我执行');// 执行}else{console.log('条件为false我执行');// 不执行}

if( 条件1 ){

语句1 //条件1为真时执行语句1

}else if(条件2){

语句2 //条件1为假,条件2为真时执行语句2

}else if(条件3){

语句3 //条件1为假,2为假,3为真时执行语句3

}else{

语句4 //上面都为假时执行语句4

}

嵌套if

// 需求: 体育考试,男生:罚十个球进了5个以上的及格,女生:罚十个球进了3个以上的及格var gender = prompt('请输入您的性别');var score = +prompt('请输入您的得分');
?if( gender === 'male' ){// 男性if( score >= 5 ){console.log('及格');}else{console.log('不及格');}}else{// 女性if( score >= 3 ){console.log('及格');}else{console.log('不及格');}}

 

switch

Switch结构和if...else if...else结构非常像,它们都能够进行对变量的多次判断并给出相应的处理方案。

switch(变量名){

}

需求:小明为手机设置了快速拨号功能,按1给父亲打电话,按2给母亲打电话,按3给朋友打电话,按4给110打电话

 // 多重if结构实现 var callNum = Number(prompt());if (callNum==1) {console.log('打给父亲');}else if(callNum==2){console.log('打给母亲');}else if(callNum==3){console.log('打给朋友');}else if(callNum==4){console.log('快打110!!!');}else{console.log('其他的号码随便打');}
?
?// 使用switch结构实现var callNum = Number(prompt());switch(callNum){case 1:console.log('打给父亲');break;case 2:console.log('打给母亲');break;case 3:console.log('打给朋友');break;case 4:console.log('快打110!!!');break;default:console.log('其他的号码随便打');}

从上面的代码中我们可以看出对于变量的等值判断switch结构要比if结构清晰并且写起来更加舒服。

在switch语句中有一个default选项,它的执行逻辑和if语句中的else部分是一样的,default选项一定是等到其他的部分判断结束之后才会执行。default部分的书写顺序不是固定的,如果你愿意你也可以将default部分放在switch语句的顶部。不过也要在该部分之后放一个break关键字。

在switch语句中break是必须的,如果缺失了break就会发生switch穿透。

switch穿透是指当switch语句中某一个case被匹配到并且该case下的语句会被执行,当case部分逻辑执行完毕之后如果没有break的话就会一直往下一个case匹配。

也就是说在switch语句中当case被匹配到,程序只有遇到break才会跳出switch。

多重if和switch区别

多重if和switch区别?

前者用于范围判断,后者用于等值判断

循环结构

while

循环操作用于执行重复的操作,它拥有多种形式。而无论是哪一种形式其实都离不开四个组成部分:

1,循环变量:通常作为条件出现

2,条件判断:循环是否执行的依据

3,循环操作:重复执行的部分

4,更新变量:防止循环成为死循环,跳出循环体的重要组成部分

while(条件){

// 循环体

}

var num = 1;// 初始化循环变量

while(num <= 100){// 循环变量

// 循环体

console.log('第'+num+'次输出:hello world!');

// 更新变量

num++;

}

do-while

    /*do{}while( 条件 )*/var sum1 = 0;var num1 = 11;while( num1<=10 ){sum1+=num1;num1++;}console.log( sum1 );
?var sum2 = 0;var num2 = 11;do{sum2+=num2;num2++;}while( num2<=10 )console.log( sum2 );

 

 

区别

while 和 do..while循环的区别?

while是先判断,再执行,如果条件不满足,一次都不会执行

do...while是先执行,再判断,至少都会执行一次

for

    /*for( 声明循环变量;循环条件;更新循环变量 ){// 循环体...}*/var num = 1;while( num<=100 ){console.log( '第'+num+'次:好好学习,天天向上' );num++;}// 使用for循环打印100次,好好学习,天天向上for( var num = 1;num<=100;num++ ){console.log( '第'+num+'次:好好学习,天天向上' );}

嵌套循环

允许我们进行循环之间的相互嵌套,而循环之间的嵌套也能帮助我们完成一些带有特定层级关系的业务。

需求:录入学生的成绩。共有三个班级,记录每个班级四名学生的成绩(循环录入)。

	for( var i=1;i<=3;i++ ){// i=>1 j=>1// i=>1 j=>2// i=>2 j=>1for( var j=1;j<=4;j++ ){console.log( '第'+i+'个班级第'+j+'名学生的成绩' );}}
//写法2for( var i=1;i<=4;i++ ){console.log( '第1个班级第'+i+'名学生的成绩' );}for( var i=1;i<=4;i++ ){console.log( '第2个班级第'+i+'名学生的成绩' );}for( var i=1;i<=4;i++ ){console.log( '第3个班级第'+i+'名学生的成绩' );}

上面的代码就是一个典型的嵌套循环的操作,这种嵌套循环的语法对于新手极其容易让人混淆,所以我们一开始需要牢牢抓住嵌套循环的语句的特点:

外层循环执行一次,内层循环执行一轮

上面的代码仅仅只是让我们循环录入每一个同学的成绩,并没有做其他事情,我们将需求改一下。

要求1:计算出三个班级的总分。

	var sum = 0;for( var i=1;i<=3;i++ ){// 外层循环控制班级for( var j=1;j<=4;j++ ){// 内层循环控制人数var score = +prompt('请输入第'+i+'个班级第'+j+'个学生的成绩');sum += score;}}console.log( sum );

要求2:计算出每一个班级自己的平均分。

	for( var i=1;i<=3;i++ ){// 外层循环控制班级var sum = 0;for( var j=1;j<=4;j++ ){// 内层循环控制人数var score = +prompt('请输入第'+i+'个班级第'+j+'个学生的成绩');sum += score;}console.log( '第'+i+'个班级的平均分为:'+sum/4 );}

while和for循环体的区别

循环次数确定的情况,通常选用for循环

循环次数不确定的情况,通常选用while

while和do...while的区别

当条件为false时,while一次都不会执行,先判断再执行

当条件为false时,do...while至少会执行一次,先执行再判断

break和continue区别

break语句

之前我们在switch语句中使用了break语句,用以跳出switch语句。

break语句也可以用在循环语句中,也可以跳出循环语句。

需求:计算1-10整数之和,当和大于20时结束计算:

    var sum = 0;for( var i=1;i<100;i++ ){sum += i;if( sum>20 ){break;// 跳出循环}}sum;// 21

continue语句

continue和break语句类似,也是跳转的作用,可以让代码不按照既有的顺序执行。

continue是跳出本次循环,直接进入下一次循环操作。

求1-100之间所有偶数之和:

    var sum = 0;
?for( var i=1;i<=100;i++ ){
?// 当continue语句执行,循环体中continue语句后面的所有的代码都不会执行
?// 直接进入下一次循环
?if( i %2 == 0 ) continue;
?sum += i;
?}

练习

// 需求1:求出1-100之间所有整数之和
// 需求2:求出1-100之间所有偶数之和
// 需求3:求出1-100之间所有奇数的和
// 需求4:输出1-100之间所有7的倍数
//需求5:在页面中输出1-1000之间所有5的倍数,每8个数字换一行
// 6.让用户输入十个数字,比较出其中最大值
// 7.求1-10之间的整数和,和大于20时候停止相加,并输出和,以及以前的数字
// 8.输出加法公式
// 9需求:录入学生的成绩。共有三个班级,记录每个班级四名学生的成绩(循环录入)
// 要求1:计算出三个班级的总分
// 要求2:计算出每一个班级自己的平均分
/*10***************
/*11**************************/  
?
/*12****************/
/*13
?****************
*********&nbsp;
?*/
/*14****************/
/*15***************
?*/
?
// 16两种乘法口诀表

 

复习

完整的循环

1,定义循环变量

2,循环条件

3,循环体

4,更新循环变量

 

JS五大基本数据类型

1,number

2,string

3,boolean

4,undefined

5,null

 

String() 和 toString() 区别?

1,调用方式不同

String( 变量 )

变量.toString()

2,String()可以转换任意数据,toString()无法转换undefined和null

答案

?
// 需求1:求出1-100之间所有整数之和
// 先定义sum
// var sum = 0;
// // 用for
// for(var i = 1;i <=100;i++){
//  sum+=i;
// }
//  console.log(sum);
?
?
// 需求2:求出1-100之间所有偶数之和
// 先定义和
// var sum = 0;
// for
// for(var i = 1; i<=100;i++){
//  // if判断偶数
//  if(i%2 === 0){
//      sum += i;
//  }
// }
// console.log(sum);
// var sum = 0;
// for(var i = 1; i<=100;i++){//  if(i%2 === 0) continue;
//  sum+=i;
// }
// console.log(sum);
?
// 
// 需求4:输出1-100之间所有7的倍数
// for(var i = 1; i <=100; i++){
//  if(i%7 !==0) continue;
//  console.log(i);
?
// }
?
//需求5:在页面中输出1-1000之间所有5的倍数,每8个数字换一行
// var count = 0 ;
// for(var i = 1; i<=1000; i++){
//  if(i %5 ===0) {
//  count++;
//  document.write(i + " ");
?
//  if(count %8 === 0){
//      document.write("<br>");
//  }
//  }// }
// 6.让用户输入十个数字,比较出其中最大值
// var max = 0;
// for(var i = 0;i<10;i++){
//  var num = + prompt("请输入第"+i+"个数字");
//  if(max<num){
//      max = num;
//  }
// }
// console.log(max);
?
?
?
// 7.求1-10之间的整数和,和大于20时候停止相加,并输出和,以及以前的数字
?
// var sum = 0;
// for(var i = 1; i<=10;i++){
//  sum+=i;
//  if(sum>20) break;
?
// }
// console.log(sum,i);
?
// 8.输出加法公式// 0+5=5// 1+4=5// 2+3=5// 3+2=5// 4+1=5// 5+0=5
// for(var i = 0 ,j=5;i <=5,j>=0;i++,j--){
?
//  console.log(i+ "+"+j + "="+(i+j));//嵌套会出现问题
// }
?
?
// 9需求:录入学生的成绩。共有三个班级,记录每个班级四名学生的成绩(循环录入)
// for(var i = 1;i<=3;i++){
//  for(var j = 1;j<=4;j++){
//      var score = +prompt("第"+i+"班级第"+j+"名学生成绩");
//      console.log(score);
//  }
// }
// 要求1:计算出三个班级的总分
// 要求2:计算出每一个班级自己的平均分
// for(var i = 1;i<=3;i++){
//  var sum = 0;
//  for(var j = 1;j<=4;j++){
//      var score = +prompt("第"+i+"班级第"+j+"名学生成绩");//      sum+=score;
//  }
//  console.log("第"+i+"班级平均分"+sum,sum/4);
// }
/*10***************
?
?1**2***3****4*****5******1*** 32****43*****4******5*******
?
*/
// for(var i = 1; i <=5;i++){
//  for(var j = 1; j <= i;j++){
//      document.write("*");
//  }
//  document.write("<br>")
// }
?
/*11*************************
?
?*/  
// for(var i = 1;i <= 5;i++){
//  for(var j = 1; j<=2*i-1;j++){
//      document.write("*");
//  }
// document.write("<br>")
// }
/*12****************/// for(var i = 1;i<=5;i++){//  for(var j = 5;j>=i;j--){//      document.write("*");//  }// document.write("<br>")// }
/*13
?****************
*********&nbsp;
?*/
// for(var i = 1; i<=5;i++){
//  for(var j = 4;j>=i;j--){
//      document.write("&nbsp;");
//  }
//  for(var k = 1; k<=2*i-1;k++){
//      document.write("*");
//  }
//  document.write("<br>")
// }
?
/*15*************************
?*/
// for(var i = 1;i<=5;i++){
//  for(var j = 1; j<=5;j++){
//      document.write("*"+"&nbsp;&nbsp;&nbsp;");
//  }
//  document.write("<br>");
// }
// var str = "";
// for(var i = 1;i<=5;i++){
//  for(var j = 1; j<=5;j++){
//      str +="*"+" ";//  }
//  str+="\n";
// }
// console.log(str);
// 16两种乘法口诀表
// var str = "";
// for(var i = 1;i<=9;i++){
//  for(var j = i;j<=9;j++){
//      str+=i+ "*"+j+"="+(i*j)+"\t";//  }
// str+="\n";
?
// }
// console.log(str);