2<保姆教程>》JavaScript基础(流程控制结构)

139 阅读5分钟

JavaScript基础

流程控制结构

顺序结构

顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序会按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的

分支结构

  1. if分支语句
    let names = prompt('请输入你的名字');
    // 情景1:如果输入的名字是李华,那么就提示他'吃饭'
    if (names == '李华') {
        // 如果()里面的条件表达式结果为ture则执行{}里面的代码
        alert('吃饭')
    }
    // 情景2:如果输入的名字是李华,那么就提示他'吃饭',如果不是那么就提示他'睡觉'
    if (names == '李华') {
        // 如果()里面的条件表达式结果为ture则执行{}里面的代码
        alert('吃饭')
    } else {
        // 否则则执行这里的代码
        alert('睡觉')
    }
    // 情景3:如果输入的名字是李华,那么就提示他'吃饭';如果名字是小红那么就提示他'跑步',如果既不是李华也不是小红那么就提示‘你不归我管’
    if (names == '李华') {
        alert('吃饭')
    } else if (names == '小红') {
        alert('跑步')
    } else {
        alert('你不归我管')
    }
    // 判断闰年案例:闰年的条件-》年份能被4整除并且不能被100整除,或者能够被400整除
    let year = prompt('输入年份')

    if (isNaN(year) == true) {
        //首先判断用户输入的是否是年份
        alert('请输入具体的年份')
    } else if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
        // 输入框输入的数字也是字符串,但是%之后会有一个隐式转换,因此不需要再转换了,如果不清楚得翻看本专栏的第一章
        alert('闰年')

    } else {
        alert('平年')
    }
    - 一组分支结构中如果有一个分支的条件表达式成立,执行对应的代码之后,就会结束掉整个分支结构,然后执行分支结构之后的代码
  1. switch分支语句
    // 语法
    switch (表达式) {
        case value1:
            {
                // 执行语句1
            }
            break
        case value2:
            {
                // 执行语句2
            }
            break
        default:
            {
                // 以上的case都不成立,则执行
            }
    }
    -  如果有一个case成立执行完其对应的语句后,整个switch结束;否则有default则执行default后的语句,default也可以没有
    // 案例:查询店内水果的价值
    let names = prompt('请输入你要查询的水果')
    switch (names) {
        case '苹果':
            {
                alert('9元')
            }
            break
        case '香蕉':
            {
                alert('8元')
            }
            break
        case '西梅':
            {
                alert('18元')
            }
            break
        default:
            {
                alert('本店没有你要查询的水果')
            }
    }
    // 注意事件
    1. switch()里面的值与case后面的值是===才会成立
    2. 如果没有break则会继续往下执行,不管case有没有成立
  1. switch语句与if else if语句的区别
    // 1.一般情况下,他们两个语句可以相互替换
    // 2.switch...case语句通常处理case为比较确定的值的情况,而if..else if语句更加灵活,常用于范围判断(大于等于某个范围)
    // 3.switch语句进行条件判断后直接执行到程序的条件语句,效果更高。而if...else语句有几种条件,就得判断多少次
  1. 三元表达式
    //三元表达式也能做一些简单的条件选择,由三元运算符组成的式子称为三元表达式 
    var a = 1
    - 条件表达式?表达式1:表达式2    
    a = a < 10 ? '0' + 1 : a
    console.log(a)//01

循环结构

  1. for循环
    // 语法:
    for(初始化变量;条件表达式;操作表达式){
        循环体
    }
    -------------------------------------------------------------------------------
    // 执行过程
    for (var i = 0; i <= 100; i++) {
        console.log('你好,小伙子')
    }
    如下:
                               var i = 0
                                  ||
                               i <= 100                                
            ||                                            ||
        成立                                          不成立
        console.log('你好,小伙子')                     直接结束   
        i++
        i <= 100 
        ||
        成立
        console.log('你好,小伙子')
        i++
        i <= 100 一直这样直到该条件表达式不成立,结束
 ----------------------------------------------------------------------------------
    //  双层循环 
    for(初始化变量;条件表达式;操作表达式){//外层循环
        for(初始化变量;条件表达式;操作表达式){//内层循环
            循环体
        }
    }
    // 执行过程:
     for(var i = 0; i < 10; i++){//外层循环
        for(var k = 0; k < 10; k++){//内层循环
            循环体
        }
    }
    -外层循环一次,内循环10次。内循环结束后在回到外循环的操作表达式,成立后内循环再十次,每次k都从等于0开始,等于9结束。*能悟多少是多少吧
    // 99乘法表
    let str = ""
    for (var i = 1; i <= 9; i++) {
        for (var k = 1; k <= i; k++) {
            let c = i + "*" + k + '=' + i * k
            str = str + c + " "
        }
        str += '\n'
    }
    console.log(str)
  1. while循环
    // 语法:注意要有操作表达式,以防止死循环
    while(条件表达式){
        循环体
    }
    // 案例:提问你爱我吗?如果不爱则一直问,爱就结束循环
    var flag = prompt('你爱我吗?')
    while (flag != '爱') {
        flag = prompt('你爱我吗?')
    }
  1. do while循环
    // 语法:注意要有操作表达式,以防止死循环
    do {
        循环体
    } while (条件表达式)
    // 案例:打印1到100
    let a = 1
    do {
        console.log(a)
        a++
    } while (a <= 100)
    - 与while的区别:先执行do{}循环体,再执行while()表达式,所以说就算表达式一开始就不成立,循环体也至少都会执行一次

continue和break

  1. continue
    // continue关键字用于立即跳出本次循环,继续下一次循环(本次循环中continue之后的代码就会少执行一次)
    // 案例 买了5个包子吃,第3个包子有虫子(仍掉),继续吃第4第5个
    for (var i = 1; i <= 5; i++) {
        if (i == 3) {
            continue
        }
        console.log('吃第' + i + '个包子')
    }
    //吃第1个包子
    //吃第2个包子
    //吃第4个包子
    //吃第5个包子
  1. break
    //break关键字用于立即跳出整个循环(循环结束)
    // 案例 买了5个包子吃,咬了一口第3个发现有虫子,其他的吃不下了
    for (var i = 1; i <= 5; i++) {
        if (i == 3) {
            break
        }
        console.log('吃第' + i + '个包子')
    }
    //吃第1个包子
    //吃第2个包子