JS笔记(js中的流程控制语句介绍)


流程控制:控制代码执行的过程。

在任何的语言中,流程控制部分分为三类:
1:顺序执行。 从上到下依次执行。
2:分支选择:根据条件,有选择的执行某些代码,跳过某些代码。
if:单分支
if-else:双分支
if-else if…else:多分支
switch:多分支
3:循环:反复执行某些代码。
while
do-while
for

if单分支选择语句

1:语法: if(条件){ //任意的js代码  if代码块  }
2:解释:
    if是js的关键字。
    小括号必须要有
    条件:要求是一个boolean表达式。返回值为boolean。如果条件返回的不是boolean值,那么
        js底层会进行隐式的类型转换,转换为boolean值。
    一对大括号:里面是任意行的js代码。
3:执行过程:
    1:首先判断if后的条件的返回值。
    2:如果返回值为true,那么就执行if 代码块。 然后执行后续的内容。
    3:如果返回为false,那么就跳过if代码块,执行后续的内容。

注意:
    1:if是一个单分支选择语句,被选择执行的语句,根据条件是否成立,选择执行或者不执行。
    2: 如果if代码块中只有一条js代码。可以省略大括号。
        如果是多条js代码,那么必须使用大括号包裹。
    3:if后的条件的小括号后,不能添加 ;  .如果添加了分号,那么条件控制的是否执行的代码
        就是分号。而不是后面的大括号中的内容了。
<script>
    //随机得到两个数,将比较大的求得,并打印。使用if实现。
    const MIN = 10;
    const MAX = 20;
    var num1 = ~~(Math.random () * (MAX - MIN) + MIN);
    var num2 = ~~(Math.random () * (MAX - MIN) + MIN);
    var num3 = ~~(Math.random () * (MAX - MIN) + MIN);
    console.log ("num1 = " + num1 + "\tnum2 = " + num2 + "\tnum3 = " + num3);

    /*var max = num1;
    if (max < num2) {
        max = num2;
    }
    if(num3 > max){
        max = num3;
    }*/
    var max;
    if(num1 >= num2 && num1 >= num3){
        max = num1;
    }
    if(num2 >= num1 && num2 >= num3){
        max = num2;
    }
    if(num3 >= num2 && num3 >= num1){
        max = num3;
    }
    //等价于上面的写法
    if(num3 >= num2){
        if(num3 >= num1){
            max = num3;
        }
    }
    console.log ("max = " + max);
</script>

if-else双分支选择

语法:if(条件){ //if 代码块 }else{ //else代码块 }
解释:
    条件:和if中的条件一致。
    else:是js中的一个关键字。否则的意思。
    else后的大括号:里面是任意的js代码。
 执行过程:
    1:先计算条件。必须返回一个布尔值,可能存在隐式的转换。
    2:如果条件返回的结果为true,那么就执行if代码块。而不执行else代码块。
    3:如果返回的结果为false,那么就跳过if代码块,执行else代码块中的内容。

 注意:
    1:if可以单独使用。else 不能单独存在,必须和某一个if 配对使用。
    2:if 代码块和else代码块中的内容,如果只有一行js代码,可以省略大括号。
    3:不要在条件小括号后添加分号,else就没有配对的if了。报错了。
    4: if 和 else之间,要么是一条js代码,要么是一个if代码块。
    5:if-else 双分支。这两个分支是条件互斥的。两个分支执行且必须执行其中的一个分支。
<script>
    //练习:两个英雄pk,一人攻击一次。
    //一个叫阿基里斯,一个叫赫克托
    var aHp = 100;
    var aAtk = 100;

    var hHp = 100;
    var hAtk = 100;
    //赫克托攻击阿基里斯
    var damage = hAtk + ~~(Math.random () * (11) - 5);//【-5 +5】
    aHp -= damage;
    if (aHp <= 0) {//阿基里斯挂了
        aHp = 0;
        console.log ("赫克托攻击了阿基里斯,产生了伤害:" + damage);
        console.log ("阿基里斯挂了!");
    } else {//阿基里斯残血反击
        damage = aAtk + ~~(Math.random () * (11) - 5);//【-5 +5】
        hHp -= damage;
        if (hHp <= 0) {
            hHp = 0;
            console.log ("阿基里斯残血反杀了赫克托。");
            console.log ("赫克托挂了");
        }
    }
    //结果:
    if (aHp === 0) {//阿基里斯的血量为0
        console.log ("赫克托胜利了!");
    } else {阿基里斯的血量不为0,还活着
        if (hHp === 0) {//赫克托血量为0
            console.log ("阿基里斯胜利了!");
        } else {
            console.log ("aHp = " + aHp + "\thHp = " + hHp);
            console.log ("平局!");
        }
    }
</script>

if-else if…else 多分支选择语句

语法:
    if(条件-1){ //代码块-1}
    else if(条件-2){ //代码块-2}
    else if(条件-3){ //代码块-3}
    ......
    else{代码块-n}
 执行过程:
    1:先判断 条件-1,如果成立,执行 代码块-1。后续的所有的分支都被跳过。
    2:条件-1 不成立。继续判断 条件-2.成立执行对应的代码块,不成立,继续判断后续的条件。
    3:一次类推,只要有一个条件成立了,就执行对应的代码块,其他的代码块都被跳过。
    4:如果所有的条件都不成立,那么执行最后的else 的代码块。

 注意:
    1:如果代码块中的内容为一条js代码,大括号可以省略。
    2:这些所有的分支的条件理论上应该是互斥的。不应该存在重叠的条件。
    3:每个else 都和它前面的距离它最近的if 配对。
    4:if-else 多分支,执行且仅能执行其中的一个分支。
    5:最后的else可以不写。取决于业务的要求。如果最后的else没有,那么这么多的分支可能
        一个都不执行。如果前面的所有的条件都不成立,那么就都不执行。
<script>

    /*练习 随机 得到一个分数[0,100],
    * [90-100]:打印 优秀
    * [80-89]:良好
    * [70-79]:中等
    * [60-69]:及格
    * [0-59]:回炉重造。
    * */
    const MIN_SCORE = 0;
    const MAX_SCORE = 101;
    var score = ~~(Math.random () * (MAX_SCORE - MIN_SCORE) + MIN_SCORE);
    console.log (`score = ${score}`);

    if (score >= 90) {
        console.log ("优秀");
    } else if (score >= 80) {
        console.log ("良好");
    }else if(score >= 70){
        console.log ("中等");
    }else if(score >= 60){
        console.log ("及格");
    }else{
        console.log ("回炉重造");
    }
</script>

switch-case 多分支选择:

语法:
    switch(变量表达式){
    case 常量表达式-1:
        代码块-1
    break;
    case 常量表达式-2:
        代码块-2
    break;
    case 常量表达式-3:
        代码块-3
    break;
    .....
    default:
    代码块-n
    break;
    }
解释:
    switch:js关键字,开关的意思。
    小括号中的变量表达式:包含变量的表达式。
    后面是一对大括号。大括号中有若干对 case-break 结构体。
    case 后通常是常量表达式:
    代码块:任意行js代码分支语句。
    break:js关键字。后面直接跟分号即可。

执行过程:
    1:首先计算 switch后的变量表达式的结果。
    2:然后从上到下依次计算每个case 后的常量表达式计算的结果。
        然后依次和switch变量表达式计算的结果进行等值比较。
        比较是否相等。如果和某一个case 后的值相等,那么就执行对应的
        代码块的内容。如果不相等,就继续比对下一个case 后的值。
    3:如果某一个case 相等了,那么就执行里面的内容,遇到break,
        直接结束整个switch语句。
    4:如果和每个case后的值都不相等,那么就执行default后的代码块。

注意:
    1:每个case后的常量表达式的值应该是不同的。
    2:多少个case 取决于业务的要求,没有数量的限制。
    3:每个case 后的break,都是可以没有的。取决于业务的需求。
        如果执行了case后需要结束switch,那就需要添加break。
    4:default:是可选择添加的。根据业务要求。
    5: 该机构只且最多比对相等一次。

 break:在switch语句中的作用
    就是用来结束switch语句的。
    如果执行了case后的代码,但是case后没有break,那么后面的所有的case都将被继续执行。
    直到遇到了一个break,才会结束switch。
<script>
    /*练习 随机 得到一个分数[0,100],
   * [90-100]:打印 优秀
   * [80-89]:良好
   * [70-79]:中等
   * [60-69]:及格
   * [0-59]:回炉重造。
   * */
    const MIN_SCORE = 0;
    const MAX_SCORE = 101;
    var score = ~~(Math.random () * (MAX_SCORE - MIN_SCORE) + MIN_SCORE);
    console.log (`score = ${score}`);
    score /= 10;
    score = ~~(score);
    console.log (`score = ${score}`);//[0-10]
    switch (score) {
        case 10: case 9:
            console.log ("优秀");
            break;
        case 8:
            console.log ("良好");
            break;
        case 7:
            console.log ("中等");
            break;
        case 6:
            console.log ("及格");
            break;
        case 5:
        case 4:
        case 3:
        case 2:
        case 1:
        case 0:
            console.log ("回炉重造");
            break;
            //等价代码
        // default:
        //     console.log ("回炉重造");
        //     break;
    }
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值