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

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=>1
		for( var j=1;j<=4;j++ ){
			console.log( '第'+i+'个班级第'+j+'名学生的成绩' );
		}

	}
//写法2
	for( 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*** 3
        2****4
        3*****
        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);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值