JS(基础) 流程控制

流程控制

  • 顺序结构:代码从上往下逐行执行
  • 分支结构:代码根据一定的条件,有选择性的执行
  • 循环结构:代码根据一定的条件,重复执行

分支结构

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>分支结构if</title>
</head>
<body>
    
</body>
</html>
<script>
    // 分支结构:
    // 格式1(单分支):if(条件){满足条件执行的代码}
    /*
    var x = 5;
    var y = 8;
    if (x > y) {
        console.log("x比y大");
    }
    */

    // 格式2(双分支):if(条件){满足条件执行的代码}else{不满足条件执行的代码}
    /*
    var x = 5;
    var y = 8;
    if (x > y) {
        console.log("x比y大");
    } else {
        console.log("x比y小(或者相等)");
    }
    */
    
    // 格式3(多分支):if(条件){代码}else if(条件){代码} …… else{都不满足执行的代码}
    // PS:写 < 的话,条件一般从小往大排(写 > 的话,条件一般从大往小排)
    // PS:其中一个条件满足,其他代码均不执行
    /*
    var score = 95;
    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("不及格");
    }
    */


    // 分支结构可以嵌套
    // 比如招工:性别男性,年龄20-40
    var gender = "女";
    var age = 28;
    if (age >= 20 && age <= 40) {
        if (gender == "男") {
            console.log("招");
        } else {
            console.log("不招");
        }
    } else {
        console.log("不招");
    }

</script>

循环结构 (for)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>循环结构for</title>
</head>
<body>
    
</body>
</html>
<script>
    // 格式:for(初始条件;循环条件;增量/步长){循环体}
    // 例如:
    // for(var i = 0; i < 10; i++){
    // }

    /*
    for循环执行流程:
    1.执行初始条件:var i = 0; (初始条件只执行一次)
    2.执行循环的判断条件:i < 10; 
                        若成立:执行第3步
                        若不成立:跳出for循环
    3.执行循环体{}里面的代码
    4.执行增量/步长:i++; ==> 执行第2步
    */
    // for(var i = 0; i < 10; i++){
    //     console.log("打印第几份试卷");
    // }

    // PS:for循环有几个地方可以修改的:
    // 1.初始条件可以写在上面 2.i++可以写在循环体里 3.小括号中的两个分号不能省略 4.当for执行完毕i的值等于判断条件的值
    // var i = 0;
    // for (; i < 10; ) {
    //     console.log("打印第几份试卷");
    //     i++;
    // }
    // console.log(i);

    // 在for循环体里面可以使用循环变量
    // for(var i = 0; i < 10; i++){
    //     // console.log("i = " + i);
    //     console.log("打印第" + (i + 1) + "份试卷");
    // }

    // 在使用for循环时,尽量避免出现死循环
    // for(var i = 10; i >= 0; i++){
    //     console.log(i);
    // }
    // for(var i = 0; i < 10; i--){
    //     console.log(i);
    // }

    // for循环中可以使用分支结构
    // for (var i = 0; i < 100; i+=2) {
    //     console.log(i);
    // }
    // for(var i = 0; i < 100; i++){
    //     if (i % 2 == 0) {
    //         console.log(i);
    //     }
    // }

    // for循环中还可以嵌套for循环
    // for(var i = 0; i < 10; i++){
    //     // 外层i循环,控制内层循环执行10次
    //     for (var j = 0; j < 10; j++) {
    //         console.log(j);
    //     }
    // }

    // 内层for循环可以使用外层for循环的变量
    for (var i = 0; i < 10; i++) {
        var str = "";
        for (var j = 0; j < i + 1; j++) {
            // 控制每一行有几个星星
            str += "⭐";
        }
        // 一共会打印10行
        console.log(str);
    }
    // 打印在网页上
    for(var i = 0; i < 10; i++){
        for (var j = 0; j < i + 1; j++) {
            document.write("⭐");
        }
        document.write("<br>");
    }
    
    /*
    第一次
    i = 0; i < 10;
        j = 0; j < 0+1;
        console.log(0);
        j++=1; j < 0+1;

    第二次
    i++=1; i < 10;  
        j = 0; j < 1+1;
        console.log(0);
        j++=1; j < 1+1;
        console.log(1);
        j++=2; j < 1+1
    第三次
    ……
    */
</script>

循环结构(while)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>循环结构while</title>
</head>
<body>
    
</body>
</html>
<script>
    // 格式:初始条件 while(循环条件){循环体,增量/步长}
    // var i = 0;
    // while(i < 10) {
    //     console.log("打印第" + (i + 1) + "份试卷");
    //     i++;
    // }

    // while和for使用场景:
    // for循环常用于循环次数固定或者循环次数已知的情况下。
    // while循环常用于目标明确,但循环次数未知的情况下。

    // 例:已知2021王叔叔家有50只兔子,按照每年10%的增长速度,请问到哪一年王叔叔家的兔子能突破100只?
    var year = 2021;
    var count = 50;
    while(count < 100){
        year++;
        count *= 1.1;
    }
    console.log(year);
    console.log(count);



    // do-while:
    // 格式:初始条件 do{ 循环体和增量 }while(判断条件)
    // var i = 0;
    // while(i < 0) {
    //     console.log("打印第" + (i + 1) + "份试卷");
    //     i++;
    // }
    var i = 0;
    do{
        console.log("打印第" + (i + 1) + "份试卷");
        i++;
    }while(i < 0);

    // while和do-while
    // while:先判断,再执行(有可能循环体一次也不执行)
    // do-while:先执行,再判断(循环体至少会执行一次)
</script>

分支结构(switch)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>分支结构switch</title>
</head>
<body>
    
</body>
</html>
<script>
    // 用法:
    // PS:switch小括号中一定要写上具体的值(有值的表达式也可)
    // PS:case在列举值的时候可以不按顺序排列
    // PS:多个case可以连写
    var week = 5;
    switch (week) {
        case 1:
            console.log("今天星期一");
            break;
        case 2:
            console.log("今天星期二");
            break;
        case 3:
            console.log("今天星期三");
            break;
        case 4: case 5: 
            console.log("今天星期四或者五");
            break;
        default:
            console.log("今天星期六或者日");
            break;
    }

    // switch和if的区别:
    // if:常用于判断条件是一个范围
    // switch:常用于判断具体的值且有限(最好是少量的)

    // 例:给你一个指定的年和月,求这个月有多少天?
    // 闰年:非世纪年能被4整除,世纪年能被400整除。29
    var year = prompt("请输入一个年份:")*1; 
    var month = prompt("请输入一个月份:")*1;
    var day = 0;
    switch (month) {
        case 1: case 3: case 5: case 7: case 8: case 10: case 12:
            day = 31;
            break;
        case 4: case 6: case 9: case 11:
            day = 30;
            break;
        case 2:
            if (year%400==0 || year%100!=0&&year%4==0) {
                day = 29;
            }else{
                day = 28;
            }
            break;
        default:
            break;
    }
    alert("这个月有:" + day + "天");
    console.log("这个月有:" + day + "天");
</script>

break 和 continue

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>breakcontinue</title>
</head>
<body>
    
</body>
</html>
<script>
    // break和continue常用在循环中(for和while)

    // for (var i = 0; i < 10; i++) {
    //     if (i == 5) {
    //         break;
    //     }
    //     console.log(i);
    // }
    // for(var i = 0; i < 10; i++){
    //     for(var j = 0; j < 10; j++){
    //         if (j == 2) {
    //             break;
    //         }
    //         console.log(j);
    //     }
    // }
    // 由以上两个示例:break:默认情况下只能中断当前循环;

    // 若想指定循环中断,需要给对应的循环起个名字,然后break对应的名字就行。
    /*
    a:
    for(var i = 0; i < 10; i++){
        b:
        for(var j = 0; j < 10; j++){
            if (j == 2) {
                break a;
            }
            console.log(j);
        }
    }
    */

    // for (var i = 0; i < 10; i++) {
    //     if (i == 5) {
    //         continue;
    //     }
    //     console.log(i);
    // }
    for(var i = 0; i < 10; i++){
        for(var j = 0; j < 10; j++){
            if (j == 2) {
                continue;
            }
            console.log(j);
        }
    }
    // continue:跳过本次循环,继续下一次循环;


</script>

常用的交互框

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>常用的交互框</title>
</head>
<body>
    
</body>
</html>
<script>
    // 警告框
    // alert("删除成功!");

    // 确认框
    // var res = confirm("您确定要删除次照片吗?");
    // if (res) {
    //     console.log("用户选择删除");
    // } else {
    //     console.log("用户选择不删除");
    // }

    // 输入框
    // PS:无论输入的什么内容,得到的是一个字符串
    var info = prompt("第3道题:请输入一个数子:","默认值");
    console.log(info);


    // // 作业:
    // var sum = 0;
    // for(var i = 0; i < 100; i++){
    //     sum += i;
    // }
    // alert("第一题:0-100内数字的和为:"+sum);
    
</script>

拓展

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>拓展</title>
</head>
<body>
    
</body>
</html>
<script>
    // 移位运算:<< 左移位 >> 右移位
    // << 左移位
    // 8 => 00001000 << 2 => 00100000 => 2^5 = 32
    console.log(8 << 2);
    // >> 右移位
    // 8 => 00001000 >> 2 => 00000010 => 2
    console.log(8 >> 2);
    console.log(9 >> 2);

    // 与运算:&
    // 5&9 => 0101&1001 = 0001 = 0
    console.log(5 & 9);

    // 或运算:|
    // 5|9 => 0101|1001 = 1101 = 13
    console.log(5 | 9);

    // 异或运算:^
    // 特点:两边相同得到false,两边不同得到true
    // 5^9 => 0101^1001 = 1100 = 12
    console.log(5 ^ 9);


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值