JS基础2_(循环)流程控制

3.6.流程控制/逻辑结构

   程序 = 数据 + 算法

程序分为:顺序执行、选择执行、循环执行

1.选择执行

(1)if语句

if(条件表达式){

  语句1;

}

 

PS:

 条件表达式为true,执行语句1

 

扫描二维码关注公众号,回复: 5922624 查看本文章

PS:在条件表达式中,有一些值会默认转成false,通常和 一起使用

  0  ''  null  NaN  undefined

ps:如果if后的大括号中只有一行语句,可以省略大括号。

 

//满30减12

var a=35;

if(a>=30){

         a-=12;

}

console.log(a);

// 省略大括号

if(a>=30)

a-=12;

console.log(a);

//练习:声明变量保存个人签名,如果签名内容为空,给变量赋值‘这个家伙很懒,什么都没有留下’;最后打印变量

var str=''; 

if (!str){   // str的值是false

         str='这个家伙很懒,什么都没有留下';

}

console.log(str);

PS在条件表达式中,有一些值会默认转成false,通常和 !一起使用

  0  ''  null  NaN  undefined

(2)if-else 语句

if(条件表达式){

  语句1;

}else{

  语句2;

}

Ps1:

  条件表达式为true,执行语句1   

  条件表达式为false,执行语句2

 

ps:如果if或者else后面只有一行语句,后面的大括号的省略

//如果余额足够支付订单金额,支付成功,否则支付失败

var money=67;  //余额

var total=70;  //订单金额

if (money>=total){

         console.log('支付成功');

}else{

         console.log('支付失败');

}

//练习:使用弹出提示框分别输入商品的单价和数量,如果商品的总价满500,则打八折;假如当前卡内的余额为600,如果足够支付总价,打印pay success,否则打印pay error。

var money=600;

var price=prompt('请您输入单价');//20

var num=prompt('请您输入数量');//30

var sum=price*num;  // (*)乘法隐式转换数据类型  //console.log(sum);

if(sum>=500){

         sum*=0.8;  //480

}

if(sum<=money){

         alert('支付成功——pay cuccess');

}else{

         alert('支付失败——pay error');

}

(3)if-else 嵌套     用于判断多种情况

if(条件表达式1){

  语句1;

}else if(条件表达式2){

  语句2;

}else...if(条件表达式n){

  语句n;

}else{

  语句n+1;

//以上所有的条件表达式都是false

}

//判断一个人的政治面貌

var type='群众元';

if (type=='党员'){

         console.log('此人为党员');

}else if(type=='共青团员'){

         console.log('此人为共青团员');

}else if(type=='群众'){

         console.log('此人为群众');

}else {

         console.log('非规范政治面貌');

}

(4)switch-case 语句

  PS:是一种特殊的分支语句,根据表达式的值,选择执行不同的程序

 

switch(表达式){

  case 值1: 

//如果表达式的值为值1

    语句1;

    break;

  case 值2:

    语句2;

    break;

  ...

  case 值n:

    语句n;

    break;

  default:

    语句n+1;

//以上所有的结果都是false

}

//练习,根据订单的状态码来打印对应的中文

//1-等待付款 2-等待发货 3-运输中 4- 已签收 5-已取消 其它-错误的状态码

var status=1;

switch (status){

         case 1: console.log('1-等待付款');

         break;

         case 2: console.log('2-等待发货');

         break;

         case 3: console.log('3-运输中');

         break;

         case 4: console.log('4- 已签收');

         break;

         case 5: console.log('5-已取消');

         break;

         default:

                   console.log('其它-错误的状态码');

}

注意:在case中表达式和值在比较的时候使用的是全等于(===),要求值和类型都满足结果才是true

 对比if-else嵌套和switch-case语句

 

if-else

switch-case

相同点

两者都可以用于多项分支语句

不同点

可以判断相等或者不等的情况,使用范围更广

只能用于全等于(===)的情况,结构上更为清晰合理,执行效率更高。

(2)练习:

   使用switch-case来根据成绩判断标准    原理:让分数除以10,然后取整

var score=92;

switch(parseInt(score/10)){  // 9.2 -> 9

    case 10:                      //两个case共用一个语句

         case 9: console.log('优秀');break;

         case 8: console.log('良好');break;

         case 7: console.log('中等');break;

         case 6: console.log('及格');break;

         default: conaole.log('不及格');

}

2. 循环执行

  循环:就是一遍又一遍执行相同或者相似的代码

  循环的两个要素:

    循环的条件:控制循环的次数

    循环体:重复执行的相同或者相似代码

(1)while 循环

while(循环条件){  //结果是布尔型的值

  循环体

}

var i=1;

while(i<10){

         console.log(i);

         i++

}

 break 关键字    可以结束任何形式的循环,break执行后,后边所有的循环体和循环条件都不执行

练习:使用变量保存一个数字,无限循环弹出提示框,获取输入的值,用输入的值和保存的数字比较,如果猜大了,弹出警示框'big',如果猜小了,弹出警示框'small',否则弹出警示框 'right'。

var num=25;

while(true){  //无限循环弹出提示框

         var str=prompt('输入一个数字');

         if(str>num){

                   alert('猜大了');

         }else if(str<num){

                   alert('猜小了');

         }else{

                   alert('恭喜你,猜对了');

         break;

         }

}

 

(2)do-while 循环

do{

  循环体;

}while(循环条件);

  先执行循环体,在执行循环条件,

 

  循环条件是false时结束循环

var i=1;

do{

console.log(i);

i++;

}while(i<=10);

  ps:不管循环条件是否为true,都会执行一次循环体

练习:打印100~1之间所有的整数

练习:打印70 75 80 85 90 95 100

练习:计算1~100之间所有能被3整除的数字的和

练习:计算10的阶乘

练习:声明一个变量保存密码'123456',无限循环弹出提示框,在提示框中输入密码,如果输入正确,结束循环。

var i=100;

do{

         console.log(i);

         i--;

}while(i>=1);

var i=70;

do{

         console.log(i);

         i+=5;

}

while (i<=100);

var i=1,sum=0;

do{

         if(i%3==0){

                  sum+=i;

         }    i++;

}while (i<=100);

console.log(sum);

var ride=1,i=10;

do{

         ride*=i;

         i--;

}while(i>=1)

console.log(ride);

var pwd='123456';

do{

         var input=prompt('请输入密码:');

         if(input==pwd){

                   alert('恭喜你输入成功');

                   break;

         }

}while(true);

var pwd='123456';

do{

         var input=prompt('请输入密码:');

}while(input!=pwd);

//如果输入的密码不正确继续执行循环体

alert('恭喜你输入成功');

 

(3)for 循环

for(初始值; 循环条件; 循环的增量){

  循环体

}

 

PS:1.执行初始值

  2.判断循环条件

  3.如果循环条件是true执行循环体,false结束循环

  4.如果执行完循环体,执行增量

  5.重新执行第二步

如果有多个循环条件,后边的起作用

 

练习:打印80 77 74 71 ....50

练习:1-20之间偶数的乘积

练习:打印本世纪(2000~2100)所有的闰年,

练习:计算1/10+2/9+3/8...+10/1

for(var i=80;i>+50;i=i-3){

         console.log(i);

}

for(var i=1,ride=1;i<=20;i++){

         if(i%2==0){

                   ride*=i;

         }

}

console.log(ride);

for(var i=2000;i<=2100;i++){

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

                   console.log(i);

         }

}

for(var i=1,j=10,sum=0;i<=10;i++,j--){

         sum+=i/j;

}

console.log(sum);

 

(4)break 和 continue

  break 关键字    可以结束任何形式的循环,break执行后,后边所有的循环体和循环条件都不执行

  continue 关键字  跳过本次循环体,继续执行下一次循环

练习:计算1~100之间所有偶数的和(遇到奇数跳过)

 

练习:打印1~100之间所有整数,不包含被3或者4整除的数字。

 

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

         if(i%2!=0){

                   continue;

         }

         sum+=i;

}

console.log(sum);

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

         if(i%3==0 || i%4==0){

                   continue;

         }

         console.log(i);

}

 

 

    练习:打印99乘法表

    练习:打印本世纪前10个闰年(当打印完第10个就结束循环)

    练习:计算1-100之间所有整数的和,当大于4000时,结束循环,打印总和和当前i的值

练习:打印99乘法表

练习:打印本世纪前10个闰年(当打印完第10个就结束循环)

练习:计算1-100之间所有整数的和,当大于4000时,结束循环,打印总和和当前i的值

//外层循环:行数 i

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

//内层循环:列数 j

         for(var j=1,str='';j<=i;j++){

                   str+=j+'*'+i+'='+i*j+' ';

         }

//每行循环完,打印         console.log(str);

}

for(var i=2000,n=0;i<=2100;i++){

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

                   console.log(i);

                   n++;

         }

         else if(n==10){

                            break;

                   }

}

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

         sum+=i;

         if(sum>4000){

         onsole.log(sum+'  '+i);

                   break;

         }

}

c

猜你喜欢

转载自blog.csdn.net/Andrexc/article/details/89345040
今日推荐