JavaScript02 分支语句/循环

JavaScript 02

本文概述:while循环、数据类型转换、语句表达式、if循环、switch选择与语句的使用

一、While循环

1. while循环概述
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 语法:
        // while(循环条件){
        //     循环体
        // }
        // 执行流程:小括号代码如果为true,一直执行循环体,知道小括号里面值为false(循环条件)
        
        // 循环三要素:循环变量初始化 循环条件 变量更新

        // 需求:打印5次今天学习状态还不并且换行
    let val =1;
    while(val<6){
        document.write('今天学习状态还不错<br>')
        val++;
    }
    </script>
</body>
</html>
1.1 while循环实例·吃个包子
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 需求:6个包子,跳过第三个包子 -->
```javascript
    <script>
        // continue;
        // let i = 1;
        // while (i <= 6) {
        //     if (i === 3) {
        //         // 自增后再去判断
        //         i++;
        //         // 遇到后跳出 
        //         continue;
        //     }
        //     document.write(`这是吃 的第${i}个包子<br>`);
        //     // 变量的变化
        //     i++;
        // }


        // break
        let a = 1;
        while (a <= 6) {
            if (a === 3) {
            // 遇到break后结束循环
                break;
            }
            document.write(`这是吃 的第${a}个包子<br>`);
            // 变量的变化
            a++;
        }
    </script>
</body>

</html>
1.2 while循环实例·用户登录
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        while (true) {
            let uname = prompt('请输入你的用户名')
            let pwd = +prompt('请输入你的密码')
            if ((uname === '初映') && (pwd === 1437)) {
                // 警告框不可以换行加<br>
                alert(`恭喜你,${uname}登录成功`)
                // 如果不是反引号``包起来的则将以字符串输出${name}无效
                break;
            }
            else {
                alert(`${uname}在数据库查询未检索到,请重试输入`)
                // continue;
            }
        }
    </script>
</body>

</html>
1.3 while循环实例·爱循环
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        while(true){
            let love = prompt('Do you love me ?')
            if(love =='love'){
                break
            }
        }

    </script>
</body>
</html>

二、数据类型的转换

2.1 数值型类型转换
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
    // 1.转数字Number(数据)
    console.log(Number('123'));//123
    // 如果Number()数据又非数字则会出现NaN(Not a Number)不是数字,但是是属于数字类型的
    // NaN是表示数据计算错误的结果,任何数据与NaN运算都是NaN
    console.log(NaN===NaN);//false

// prompt接收的内容为字符串类型的,计算需要转
let num1 = prompt('输入第一个数字')
let num2 = prompt('输入第二个数字')
alert(`两者之和为${Number(num1)+Number(num2)}`)

// 这种是隐式转换
let num3 = +prompt('输入第一个数字')
let num4 = +prompt('输入第二个数字')


    // 转为数字类型整数
    console.log (parseInt('18'));
    console.log (parseInt('18px'));//18多余字母忽略
    console.log (parseInt('abc18'));//NaN字母必须在后面
    console.log (parseInt('18.1'));//18

    // 转换为数字类型小数字
    console.log(parseInt('18.88'));
    console.log(parseInt('18.88px'));//18
    console.log(parseInt('px18.88'))//NaN;

    // 拓展:布尔类型 true是1 false是0
    console.log(true);
    console.log(false);

    </script>
</body>
</html>
2.2 转换为字符型
<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>

</head>

<body>

    <script>// 其他类型强转字符串类型

​        console.log(String(12));

​        console.log(String(true));

​        console.log(String(undefined));//undefined

​        console.log(String(null));//null// toString(进制)let num = 10

​        console.log(num.toString(2));//1010</script>

</body>

</html>
2.3 布尔类型转换
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

</head>
<body>
    <script>
        // 转布尔类型 Boolean(数据)
        // ' ' 0    null    undefined   false   NaN 这6个值转布尔都是false,其他都是true  


        // 注意 ' '里面包括了空格 不是''
        console.log(Boolean(' '));//true
        console.log(Boolean(''));///false
        console.log(Boolean(0));//false
        console.log(Boolean(null));//false
        console.log(Boolean(false));//false
        console.log(Boolean(undefined));//false
        console.log(Boolean(NaN));//false
    </script>
</body>
</html>
2.4 隐式转换
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // +号作用 相加 拼接  当正好解析转换成数字类类型
        // 显式转换:主动转。隐式:js引擎帮我们转

        // 1.+号可以当正号解析,除了+号计算外,其他运算符会默认转换成数值类型 - * / %
        console.log('10'- '2');//8
        console.log(+'abc');//NaN
        console.log(10+ +'11'-10);//11

        // 2.+号的字符串拼接
        console.log('你好'+true);//‘你好true’

        // 3.!逻辑非默认转换成布尔类型,结果是取反之后的结果
        console.log(!2);//false
        console.log(!'你好');//false
            
        
    </script>
</body>
</html>
2.5null与undefined区别(拓展)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        
    // <!-- 未定义变量没有赋值会出现undefined -->
        let a 
        console.log(a);


    // null空值一般表示这个变量以后会装一个对象
        let obj = null
    console.log(typeof obj);//object


    // null 和 undefined值相同,类型不同
    console.log(null==undefined);//true
    console.log(null===undefined);//false

// null和undefined转数字类型
console.log(Number(null));//0
console.log(Number(undefined));//NaN


// null 和 undefined转布尔类型
console.log(Boolean(null));//false
console.log(Boolean(undefined));//false

//抽象理解就是 null是建好了的房子没去住罢了 undefined则是相当于口头承诺建房子,实际上没有的
    </script>
</body>
</html>

三.语句表达式

  • 表达式:由运算符组成的式子,一般用来取值
  • 语句:向编译器发送指令,是一段可执行的代码
  • 表达式有运算有值,没运算符参加的是语句

三大流程控制语句:顺序结构、分支结构 、循环结构

3.1 分支语句if的使用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 分支语句 可惜选择想要执行的代码’ -->
    <!-- 常见if -->
    <!-- if( 默认为true) -->

    <script>
        
        // 当只有一个返回结果的时候,可以不写{}不推荐
    // if(10 == ('10')){
    //     alert('弹窗出来')
    // }


let score =+prompt('请输入你的成绩')
let name =prompt('请输入你的姓名')
 
    if (score > 700) {
        // 警告框不可以换行加<br>
        alert(`恭喜你,${name}成功上岸`)
        // 如果不是反引号``包起来的则将以字符串输出${name}无效
        // alert('恭喜你,${name}成功上岸')

    }else if(score<=500){
        alert(`抱歉,${name}已落榜`)
    }
    // 所有都不满足的时候才会执行else的结果
    else{
        alert(`数据库查询失败,请重试`)
    }
    </script>
</body>
</html>
3.2 分支语句if的使用实例·成绩判断
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>
        // while (true) {
        let score = +prompt('请输入你的成绩')
        let name = prompt('请输入你的姓名(按下Q退出)')

        if ((score >= 90 && score <= 100)) {
            alert(`恭喜你,${name}成绩优秀`)
        }
        else if (score <= 80 && score > 70) {
            alert(`${name}成绩良好`)
        }
        else if (score <= 70 && score >= 60) {
            alert(`${name}成绩及格`)
        }
        else if (0<=score&& score < 60) {
            alert(`加油,${name}成绩不及格`)
        }
        else {
            alert(`成绩输入有误,请重试`)
        }

    </script>
</body>

</html>
3.3 三元运算符
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>-
    <script>
        // 三元一次表达式:进行分支判断,二选一
    //  作用:进行分支判断 
    // 语法:   条件?true的结果:false失败的结果
    // 1>2?alert(`成功`):alert(`失败`)

    // 隐藏用法:三元一次表达式可以用于求职,如果没有值则返回undfined
    // alert没有值,直接输出了
    let val =10 > 20? alert('条件返回结果为10'):alert('条件返回结果为20')
    console.log(val);

    let val1=10 > 20?10 :20
    console.log(va1l);//返回的是20

    </script>

</body>
</html>
3.4 三元运算符实例·求最大值
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let num1 = +prompt('请输入第一个值');
        let num2 = + prompt('请输入第二个值');
        let max = num1 > num2 ? num1 : num2;
        console.log(max);
    </script>
</body>

</html>
3.5三元运算符实例·时钟补0
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 需求:当一个数字小于10的时候需要在其前面补上数字0
        let num = +prompt('输出一个数字')
        // let time = num>10 ? num : ('0' + num);
        // alert(time)

        let times =10>num ? ('0' + num):num;
        // console.log(time);
        alert(times)
    </script>
</body>

</html>

四、switch语句

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <!-- 常用在全等值的判断,会去找小括号里面全等的case-->
    <script>
        //1. 多选1,遇到break也可利用case穿透做选项)结束
        // 2.不适用范围判断(推荐if),适合等值判断
        // 3.,遇到continue跳过本次

        // 语法:
        switch ('1') {
            case '1':
                alert('我是第一项')
            case '2':
                // break;
                alert('我是第二项')
            // continue;
            case '3':
                alert('我是第三项')
                // case '2':
                break;
            // 默认值
            default:
                alert('我是默认值')
        }
    </script>
</body>

</html>
4.1 switch语句实例·简单的两位数计算器
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 需求:输入两个数字可以进行加减乘除的运算
        let num1 = +prompt('输入第一个数字');
        let num2 = +prompt('输入第二个数字');
        let mode = prompt('输入运算符');

        // switch里写判断项,case写判断依据
        switch (mode) {
            case '+': {
                alert(num1 + num2)
                break;
            }
            case '-': {
                alert(num1 - num2)
                break;
            }
            case '*': {
                alert(num1 * num2)
                break;
            }
            case '/': {
                alert(num1 / num2)
                break;
            }
            case '%': {
                alert(num1 % num2)
                break;
            }
            // 都没有的时候的默认值,不需要额外的写{}
            default:
                alert('输入的值有错误,请重新输入')
            }

    </script>
</body>

</html>

五.大综合案例

01.打印数字1-20
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 需求:打印1-20之间所有的数字并且换行显示出来
        i = 0
        while (i <= 20) {
            document.write(`${i}<br>`)
            i++
        }
    </script>
</body>

</html>
02.打印1-100的和
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 定义sum收集数据, i负责循环
        let i=0,sum=0;
        while(i<100){
            i=i+1;
            sum=sum+i;
        }
        document.write(sum);


    </script>
</body>
</html>
03-打印100-200可被6整除的数字
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 打印100-200之间,可以被6整除的数字 -->
    <!-- 逻辑分析:1.先遍历数字,获取100-200之间的所有的数字
                           2.if判断在100-200中的i每一个都有6用于取余比较
                           3.进入if后除以6取余为0的记录下来,并且i++让循环进入下一步 -->
    <script>

        let i =100
        while(i<=200){
            if(i%6===0){
                document.write(i+` `)
                i++;
            }else{
                i++;
            }
        }
    </script>
</body>
</html>
04. 累计求和
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 需求:计算1到这个数的和 比如用户输入5,则计算1-5之间的累加和
        // 我写的这个可以计算任意两个数字之间的和~~~
        let sum=0;
        let num = +prompt('计算的顶值');
        let i = +prompt('计算的低值');

        while(i<=num){
            sum =i+sum;
            i++;
        }
        document.write(sum);
    </script>
</body>
</html>
05.ATM取钱小程序
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        let ballance = 0   //作用相当于设置一个钱包负责存放数据用的
        while (true) {
            let value = +prompt('1.存钱, 2,取钱 3.查看余额 4.退出')
            // 下面这个刚开始写的是case 4 但是这样break跳不出循环,因此把这个case4提取出来,写在while的下一级,当遇到break的时候会跳出来的
            if (value===4){
                break;
            }

            switch (value) {
                case 1:
                    let save = +prompt('请输入存钱的金额')
                    ballance += save;
                    alert('存钱成功!')
                    break;

                case 2:
                    let expand = +prompt('请输入取钱的金额')
                    if (ballance >= expand) {
                        alert('取钱成功');
                        ballance-=expand
                    } else
                        alert('取钱失败,余额不足!')
                        break;

                case 3:
                    alert(`当前余额剩余${ballance}RMB`)
                    break;
            }
        }


    </script>
</body>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

初映CY的前说

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

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

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

打赏作者

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

抵扣说明:

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

余额充值