JS学习记录3/if语句/用if语句给三个数排序/switch语句/while循环/输入本金、年利率和最后总金求年数/do···while循环/for语句/for语句练习/break/continue

代码块
程序是由一条一条语句构成的,语句是按照自上向下的顺序一条一条执行的,在JS中可以使用{}为语句进行分组,同一个{}中的语句我们称为是一组语句,它们要么都执行,要么都不执行,一个{}中的语句我们也称为叫一个代码块,在代码块后面不用编写;了。
JS中的代码块只具有分组作用,没有其他的用途,代码块内部的内容在外部是完全可见的。

流程控制语句
流程控制语句可以控制程序执行流程,使程序可以根据一定的条件来选择执行。
语句的分类:
1、条件判断语句
2、条件分支语句
3、循环语句

条件判断语句:可以在执行某段代码之前进行判断,条件成立才会执行语句,条件不成立则语句不执行。
if语句
语法一:

 if(条件表达式) {
       语句···
 }

if语句在执行时,会先对条件表达式进行求值判断,如果条件表达式的值为true,则执行if后的语句,如果条件表达式的值为false,则不会执行if后的语句。
注意点:
1、if语句只能控制紧随其后的那个语句,如果希望if语句可以控制多条语句,可以将这些语句统一放到代码块中。
2、if语句后的代码块不是必须的,但是在开发中尽量写上代码块,即使if后只有一条语句。
语法二:

if(条件表达式){
   语句···
}else{
   语句···
}

执行该语句时,会先对if后的条件表达式进行求值判断,如果该值为true,则执行if后语句;如果该值为false,则执行else后的语句。
语法三:

if(条件表达式){
   语句···
}else if (条件表达式){
   语句···
}else if (条件表达式){
   语句···
}else{
   语句···
}

当该语句执行时,会从上到下依次对条件表达式进行求值判断,如果值为true,则执行当前语句;如果值为false,则继续向下判断;如果所有条件都不满足则执行最后一个else后的语句。
注意点:该语句中只会有一个代码块被执行,一旦代码块执行了,则直接结束语句。
prompt()可以弹出一个提示框,该提示框中带有一个文本框,用户可以在文本框中输入一段内容,该函数需要一个字符串作为参数,该字符串将会作为提示框的提示文字。prompt()函数的返回值是String类型的,如果想要返回number类型的返回值,则写+prompt()。
例:

var grade = prompt("请输入你的成绩(0-100)");
        if (grade>100 || grade<0 || isNaN(grade)) //筛选正确格式的成绩
        {alert("成绩输入错误!");}
        else if (grade == 100)
        {alert("奖励一辆BMW");}
        else if (grade>=80&&grade<=99)
        {alert("奖励一台iPhone15s");}
        else if (grade>=60&&grade<80)
        {alert("奖励一本参考书");}
        else {alert("什么也没有!");}

用if语句给三个数排序:

var num1=+prompt("输入第一个值:"),num2=+prompt("输入第二个值:"),num3=+prompt("输入第三个值:");
        alert("三个值分别是:"+num1+","+num2+","+num3);
        if (num1<0||num2<0||num3<0 || isNaN(num1)|| isNaN(num2)|| isNaN(num3)) {alert("输入错误!");}
         else if(num1<num2&&num1<num3){
             if(num2<num3){alert(num1+","+num2+","+num3)}
             else {alert(num1+","+num3+","+num2)}
        }else if(num2<num1&&num2<num3){
             if(num1<num3){alert(num2+","+num1+","+num3)}
             else {alert(num2+","+num3+","+num1)}
        }else if (num3<num1&&num3<num2){
             if(num1<num2){alert(num3+","+num1+","+num2)}
             else {alert(num3+","+num2+","+num1)}
        }

条件分支语句,也叫switch语句。
语法:

switch(条件表达式){
      case表达式:
             语句···
             break;//退出switch语句
      case表达式:
             语句···
             break;
             ···
      default:   //执行结果都是false则执行default后的语句
            语句···
            break;
}

执行流程:
在执行时,依次将case后的表达式的值和switch后的条件表达式的值进行全等比较,如果比较结果为true,则从当前case处开始执行代码,当前case后的所有代码都会执行,可以在当前case后使用break可以来退出switch语句;如果执行结果为false,则继续向下比较;如果所有执行结果都是false则执行default后的语句。
注意:switch语句和if语句的功能上是有重复的,使用switch可以实现if的功能,同样使用if也可以实现switch的功能,所有我们使用时,可以根据习惯选择。
方式1:

 var grade = +prompt("输入你的成绩(分):")
        switch (parseInt(grade/10)) {
            case 10:
            case 9:
            case 8:
            case 7:
            case 6:
                alert("合格");
                break;
            case 5:
            case 4:
            case 3:
            case 2:
            case 1:
            case 0:
                alert("不合格");
                break;
            default:
                alert("成绩输入错误!")
                break;
        }

方式2:

var grade = +prompt("输入你的成绩(分):")
        switch (true) {
            case grade>=60:
                alert("合格");
                break;
            case grade<60&&grade>0:
                alert("不合格");
                break;
            default:
                alert("成绩输入错误!")
                break;

循环语句:通过循环语句可以反复执行一段代码多次。
while循环
语法:

while(条件表达式){
       语句···
}

while语句在执行时,先对条件表达式进行求值判断,如果值为true,则执行循环体,循环体执行完毕之后,继续对表达式进行判断,如果为true则继续执行循环体,以此类推;如果值为false,则终止循环。
注意点:
1、将表达式写死为true的循环叫做死循环,该循环不会停止,除非浏览器关闭,死循环在开发中慎用。
2、break也可以用来终止循环。

创建一个循环需要三个步骤:
1、创建一个初始化的变量。
2、在循环中设置一个条件表达式。
3、定义一个更新表达式,每次更新初始化变量。

do···while循环
语法:

do{
  语句···
}while(条件表达式)

执行流程:
在执行时先执行循环体,循环体执行完毕后,再对while后的条件表达式进行判断,如果结果为true,则继续执行循环体,执行完毕继续判断以此类推;如果结果为false则终止循环。
实际上这两个语句功能类似,不同的是while是先判断后执行,而do···while会先执行后判断;do···while可以保证循环体至少执行一次,而while不能。
输入本金、年利率和最后总金求年数:

var money=+prompt("本金为:"),i=+prompt("年利率为:"),year=0,m=+prompt("最后总金为:");
        while(m>=money){
            money=money*(i+1);
            year++;
        }
        alert("年数为:"+year);

使用while循环实现输入错误信息后跳转到重新输入框,实现结果输出后再次回到输入框进行下一次输入。

while (true){
            while(true){
                var num1=+prompt("输入第一个值:"),num2=+prompt("输入第二个值:"),num3=+prompt("输入第三个值:");
                if (num1<0||num2<0||num3<0 || isNaN(num1)|| isNaN(num2)|| isNaN(num3)) {alert("请输入有效的数字!");}
                else{ break;}
            }
            alert("三个值分别是:"+num1+","+num2+","+num3);
            if(num1<num2&&num1<num3){
                if(num2<num3){
                    alert(num1+","+num2+","+num3)
                }
                else {
                    alert(num1+","+num3+","+num2)
                }
            }else if(num2<num1&&num2<num3){
                if(num1<num3){
                    alert(num2+","+num1+","+num3)
                }
                else {
                    alert(num2+","+num3+","+num1)
                }
            }else if (num3<num1&&num3<num2){
                if(num1<num2){
                    alert(num3+","+num1+","+num2)
                }
                else {
                    alert(num3+","+num2+","+num1)
                }
            }
        }

for语句,也是一个循环语句,也称为for循环。在for循环中,为我们提供了专门的位置用来放三个表达式:
1、初始化表达式
2、条件表达式
3、更新表达式
语法:

for(初始化表达式;条件表达式;更新表达式){
  语句···
}

执行流程:
1、执行初始化表达式,初始变量(只会执行一次)
2、执行条件表达式,判断是否执行循环
3、如果为true,则执行语句循环;如果为false,终止循环。
4、执行更新表达式,更新表达式执行完毕继续重复2。
注意点:
1、for循环中的三部分都可以省略,也可以写在外部。
2、如果在for循环中不写任何的表达式,只写两个;此时循环为一个死循环会一直执行下去,慎用。

打印1-100之间所有奇数之和:

var m=0,i=1;
        for(;i<=100;i++){
            if((i%2)!=0){m=m+i;}
        }
        alert("1-100之间所有的奇数之和为:"+m);

1-100之间所有的个数和奇数之和:

 var m=0,i=1,j=0;
        for(;i<=100;i++){
            if((i%7)==0){m=m+i;j++;}
        }
        alert("1-100之间所有的个数和奇数之和分别为:"+j+","+m);

打印出所有三位数的水仙花数:

var i=100,m=0;
        for (;i<1000;i++){
            var bai=parseInt(i/100);
            var shi=parseInt((i-100*bai)/10);
            var ge=parseInt(i%10);
            if(bai*bai*bai+shi*shi*shi+ge*ge*ge==i){console.log(i)}
        }

输入一个数字,判断该数字是否为质数:
方式一:

var i=2,n=true;
        while (true){
            var m=+prompt("输入一个大于1的自然数:");
            if(m<=1){alert("请输入大于1的自然数!")}
            else{break;}
        }
        for (;i<m&&i>=2;i++){
            if(m%i == 0){
                alert(m+"不是质数")
                n=false;
            }
        }
        if(n==true) {alert(m+"是质数");}

方式二:

var n=0;
        while (true){
            var m=+prompt("输入一个大于1的自然数:");
            if(m<=1){alert("请输入大于1的自然数!")}
            else{break;}
        }
        for (var i=2;i<m&&i>=2;i++){
            if(m%i == 0){
                alert(m+"不是质数");
                n++;
            }
        }
        if(n<1) {alert(m+"是质数");}

在页面中输出如下图形
*
**
****
****
*****

 for(var j=0;j<5;j++){
            for(var i=0;i<j+1;i++){
                document.write("*");
            }
            document.write("<br/>")
        }

倒过来:

for(var j=0;j<5;j++){
            for(var i=0;i<5-j;i++){
                document.write("*");
            }
            document.write("<br/>")
        }

讲解过程:
在这里插入图片描述

打印出1-100之间的所有质数:
for (var i=2;i<=100;i++){
            var flag=true;
            for (var m=2;m<i;m++){
                if((i%m) == 0){
                    flag=false;
                }
            }
            if(flag == true) {
                console.log(i)}
        }

break关键字可以用来退出switch或循环语句,不能在if语句中使用break和continue,break默认会立即终止离它最近的循环语句。
可以为循环语句创建一个label,来标识当前的循环label:循环语句
使用break语句时,可以在break后跟着一个label,这样break将会结束指定的循环,而不是结束最近的。break outer;

continue关键字可以用来跳过当次循环,continue默认会对离它最近的循环语句起作用,使用continue语句时,可以在continue后跟着一个label,这样continue将会对指定的循环起作用。

测试程序的性能,在程序执行之前,开启计时器,console.time("计时器的名字")它需要一个字符串作为参数,这个字符串将会作为计时器的标识。在程序结尾终止计时器console.timeEnd("计时器的名字")需要计时器的名字作为参数。

可以通过Math.sqrt()对一个数进行开方
打印出1-100之间的所有质数(改进):

console.time("a");
        for (var i=2;i<=100;i++){
            var flag=true;
            for (var m=2;m<=Math.sqrt(i);m++){//当执行到某一值时,后面便是重复的结果,所有不必再往后执行了
                if((i%m) == 0){
                    flag=false;//一旦进入判断,则已经证明i不是质数了,此时循环再执行已经没有意义了
                    break;
                }
            }
            if(flag == true) {
                console.log(i)}
        }
        console.timeEnd("a");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小婵婵不怕鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值