JavaScript逻辑控制

前言

什么是流程控制?流程控制就是程序在执行过程中,通过特定条件控制程序的执行次序。
主要有以下三种程序结构:
顺序结构:从上往下,(等式)从右到左 (如果右边是表达式 (左到右))
分支结构:控制代码何时(根据条件)执行,是否执行。
循环结构:控制代码执行(根据条件)多少次。
具体过程可参考下面图片
在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考(以下案例均在VSCode上编写)

一、顺序结构

顺序结构,就是程序按照语句所出现的先后顺序依次执行,具体表现为从上往下,(等式)从右到左 (如果右边是表达式 (左到右))
比如你在VSCode中输入以下代码:

document.write("程序开始执行...<br/>");
document.write("程序正在执行中...<br/>");
document.write("程序执行完毕...<br/>");

实现样式为:

二、分支结构--if

1.单if 条件判断: 单分支

语法:  if  (条件表达式)  { 代码块; }

执行过程: 如果 if后面括号里的条件为true,则执行大括号中的代码块。否则不执行。

注意: 在这个条件代码块后,不能乱加";",加了之后表示这一行代码运行结束,然后进行下一行,会直接执行大括号中代码

<script type="text/javascript">
	//if单分支: 只有一种选择,满足条件执行,不满足则不执行
	//输入成绩
	var score = Number(prompt("请输入小明的成绩:",""));
	//如果分数大于等于90则奖励一辆电动车
	if(score>=90){
		document.write("奖励一辆电动车<br/>");
		document.write("请小明吃大餐<br/>");
	}
	

2.if else 判断: 双分支

双分支:两者必选其一

语法:


    //输入分数
	var score = Number(prompt("请问小明你考了多少分?",""));
	// if双分支判断:分数大于等于90奖励电动车,否则,抽鞭子
	if(score>=90){
		alert("奖励一辆电动车");
	}else{
		alert("抽鞭子");
	}
if(条件表达式){
    代码块1;
}else{
    代码块2;
}

执行流程:

1.如果if后面条件表达式成立,则执行代码块1

2.如果if后面条件表达式不成立,则执行代码块2

注意: else 不能加条件

    //输入分数
	var score = Number(prompt("请问小明你考了多少分?",""));
	// if双分支判断:分数大于等于90奖励电动车,否则,抽鞭子
	if(score>=90){
		alert("奖励一辆电动车");
	}else{
		alert("抽鞭子");
	}

3 多重if 判断

语法

if(条件表达式1){
    代码块1;
}else if(条件表达式2){
    代码块2;
}else if(条件表达式3){
    代码块3;
}
.... // 省略部分条件
else{ // else可以省略
    代码块n;
}

执行流程:

  1. 代码自上而下执行,如果条件表达式1成立,则执行代码块1, 代码块1执行之后,其它分支不再执行(各个分支具有互斥性)
  2. 如果条件表达式1不成立,则判断条件表达式2是否成立,如果成立,则执行代码块2
  3. 如果条件表达式2不能成立,则判断条件表达式3是否成立,如果成立,则执行代码块3
  4. 如果条件表达式3不能成立,则依次判断后续条件。
  5. 如果所有的条件都不成立,则执行else中的代码块。
  6. 注意:else是可以省略的,代表没有一个默认选择
<script type="text/javascript">
        var name=prompt("请输入你的名字:");
        var scole=Number(prompt("请输入你的成绩:"));
        if(scole>=100||scole<=0){
            document.write("请输入正确的成绩")
        }
        else if(scole>=90){
            document.write("优秀")
        }
        else if(scole>=80){
            document.write("良好")
        }
        else if(scole>=60){
            document.write("及格")
        }
        else
            document.write("不及格")
        
    </script>

4 if嵌套

语法:if(条件表达式1){ 
        代码块1;
       }else{
         if(条件表达式3){ 
        代码块3;}}
        else{
        }
<script type="text/javascript">
        var score=Number(prompt("请输入你的分数:"));
        if(score>=100||score<=0){
            document.write("请输入正确的成绩")
        }
        else{
            if(score>=90){
            document.write("优秀")}
            else{
                if(score>=80){
                document.write("良好")
                }
                else{
                    if(score>=60){
                    document.write("及格")
                    }
                    else document.write("不及格")
                }
            }
        }
    </script>

小结:

if分支的条件都是针对一定范围的判断

4.分支结构 switch - case

switch和if的区别:switch: 用于等值判断     if : 用于范围判断

switch语法

switch(变量/数据){
    case 数据1:
       代码块1;
       break;
    case 数据2:
       代码块2;
       break;
    case 数据3:
       代码块3;
       break;
    default:
       默认代码块;
       break;
}

执行流程:

  1. 根据switch后面括号中的数据,与下面case对应的值进行一一对比。
  2. 满足某一个case分支,则执行对应的代码块
  3. 如果上面的分支都不满足,则执行default后面的代码块
  4. 其中break(结束语句执行)表示整个switch语句结束,如果某个分支没有break,则代码会继续向下执行,直到遇到break或者所有语句执行完成,switch语句才会结束。
  5. default语句可以省略。位置可以任意防治。
<script type="text/javascript">
        //令狐冲参加武林大会,师傅根据其取得成绩来采取措施
        var mc=Number(prompt("请输入令狐冲武林大会比武名次:"));
        switch(mc){
            // 针对某个变量值,判断它符合那种情况
            case 1:
                document.write("成为武林盟主,迎娶小师妹");
                break;
            case 2:
                document.write("师傅满意,成为武当派掌门");
                break;
            case 3:
                document.write("师傅略微不满,增加练功时间");
                break;
            default:
                document.write("师傅很失望,逐出师门");
                break;
        }

类似的例子还有:点餐

<script type="text/javascript">
        var n=Number(prompt("请输入今天星期几:"));
        switch(n){
            case 1:
            case 2:
                //相同结果的分支可合并
                document.write("今天吃米饭");
                break;
            case 3:
            case 4:
                document.write("今天吃面条");
                break;
            case 5:
            case 6:
                document.write("今天吃饺子");
                break;
            case 7:
                document.write("今天减肥");
                break;
            default:
                document.write("请输入正确数字")
        }
    </script>

使用switch case完成分数的等级判断:

    <script type="text/javascript">
        var n=parseInt(prompt("请输入你的考试成绩")/10);
        switch(n){
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                document.write("差");
                break;
            case 6:
            case 7:
                document.write("中");
                break;
            case 8:
                document.write("良");
                break;
            case 9:
                document.write("优");
                break;

        }
    </script>

switch case语句在执行语句后要加break,不然会形成语句穿透,即如果某个分支没有break,则代码会继续向下执行,直到遇到break或者所有语句执行完成,switch语句才会结束。

如果上面的例子中,没有break,会从合适的case值后,执行所有语句,但我们也可以用switch穿透来在一些特定条件下执行任务,如

//根据日期,判断这个日期是这一年的第几天。
<script type="text/javascript">
        var year=Number(prompt("输入年份:"))
        var mon=Number(prompt("请输入月份:"));
        var day=Number(prompt("请输入日期:"));
        var n=0;
        switch(mon){
            case 12:n=n+30;
            case 11:n=n+31;
            case 10:n=n+30;
            case 9:n=n+31;
            case 8:n=n+31;
            case 7:n=n+30;
            case 6:n=n+31;
            case 5:n=n+30;
            case 4:n=n+31;
            case 3:
                if(year%4 ==0&&!year%100== 0  || year%400==0){n=n+29;}
                else{n=n+28;}
            case 2:n=n+31;
            case 1:n=day+n;
        }
        document.write(year+"年"+mon+"月"+day+"日是"+year+"年的第"+n+"天。")
    </script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值