跟着pink老师前端入门教程(JavaScript)-day05

news2024/11/14 20:07:34

六、语句

(一)表达式和语句

1、表达式

表达式是可以被求值的代码JavaScript 引擎会将其计算出一个结果。

2、语句

语句是一段可以执行的代码。

比如: prompt() 可以弹出一个输入框,还有 if语句 for 循环语句等等

3、区别

表达式:因为表达式可被求值,所以她可以写成赋值语句的右侧

eg:表达式 num = 3 + 4

语句:语句不一定有值,所以比如alert()、for 和 break 等语句就不能被用于赋值

eg:语句 alert()弹出对话框 console.log()控制台打印输出

某些情况,也可以把表达式理解为表述语句,因为他是在计算结果,但不是必须的成分(例如continue语句)

(二)分支语句

1、程序三大流程控制语句

顺序结构:从上往下执行

分支结构:根据条件选择执行代码

循环结构:某段代码被重复执行

2、分支结构

分支语句可以让我们有选择性的执行想要的代码

2.1 if分支语句

if 语句有三种使用:单分支、双分支、多分支

1.1 单分支使用语法:

括号内的条件为true时,进入大括号里执行代码

小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型

如果大括号只有一个语句,大括号可以省略,但不提倡这么做~

    <!-- 单分支使用语法 -->
    <script>
        if (true) {
            console.log('执行语句');
        }
        // 除了0 所有的数字都为真
        if (0) {
            console.log('执行语句');
        }
        if ('2') {
           console.log('执行语句');
        }
        // 除了'' 所有的字符串都为真
        if ('') {
            console.log('执行语句');
        }
        // 单分支课堂案例1:用户输入高考成绩,如果分数大于700,则提示恭喜考入黑马程序员
        let score = prompt('请输入您的高考成绩')
        if (score > 700) {
            alert('恭喜考入黑马程序员!')
        }
    </script>
1.2 双分支if 语句

    <script>
        /*  案例一
            需求:用户输入,用户名:pink,密码:123456, 则提示登录成功,否则提示登录失败
            分析:
            ①:弹出输入框,分别输入用户名和密码
            ②:通过if语句判断,如果用户名是pink,并且密码是123456,则执行if里面的语句,否则执行else
            里面的语句。
         */
        let myname = prompt('请输入用户名')
        let pd = prompt('请输入密码')
        if (myname === 'pink' && pd === '123456') {
            alert('登陆成功');
        } else {
            alert('登陆失败');
        }

        /* 
            案例二
            需求:让用户输入年份,判断这一年是闰年还是平年并弹出对应的警示框
            分析:
            ①:能被4整除但不能被100整除,或者被400整除的年份是闰年,否则都是平年
            ②:需要逻辑运算符 
        */
        let year = +prompt('请输入年份')
        if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
            alert(`${year}年是闰年`);
        } else {
            alert(`${year}年是平年`);
        }
    </script>
 1.3 多分支if 语句

使用场景:适合于有多个结果的时候, 比如学习成绩可以分为: 优 良 中 差

 

释义:
  • 先判断条件1,若满足条件1就执行代码1,其他不执行
  • 若不满足则向下判断条件2,满足条件2执行代码2,其他不执行
  • 若依然不满足继续往下判断,依次类推
  • 若以上条件都不满足,执行else里的代码n
  • 注:可以写N个条件,但这里演示只写2个
    <script>
        // 需求:根据输入不同的成绩,反馈不同的评价
        // 注:
        // ①:成绩90以上是 优秀
        // ②:成绩70~90是 良好
        // ③:成绩是60~70之间是 及格
        // ④:成绩60分以下是 不及格
        let score = +prompt('请输入您的成绩:')
        if (score >= 90) {
            alert('优秀');
        } else if (score >= 70) {
            alert('良好')
        } else if (score >= 60) {
            alert('及格')
        } else {
            alert('不及格')
        }
    </script>
2.2 三元运算符

使用场景:比 if 双分支语句更简单的写法,可以使用三元表达式

符号:? 与 : 配合使用

语法

条件 ? 满足条件执行的代码 : 不满足条件执行的代码

// 一般用来取值

    <script>
        // 条件 ? 满足条件执行的代码 : 不满足条件执行的代码
        let sum = 3 < 5 ? 3 : 5
        /*  
            案例一
            需求:用户输入2个数,控制台输出最大的值
            分析:
            ①:用户输入2个数
            ②:利用三元运算符输出最大值
        */
        let num1 = +prompt('请输入第一个数')
        let num2 = +prompt('请输入第二个数')
        let max = num1 > num2 ? num1 : num2
        // num1 > num2 ? alert(`最大值:${num1}`) : alert(`最大值:${num2}`)
        alert(`最大值:${max}`)

        /*       
            案例二
            需求:用户输入1个数,如果数字小于10,则前面进行补0, 比如 09 03 等
            分析:
            ①:为后期页面显示时间做铺垫
            ②:利用三元运算符 补 0 计算
         */
        let num = +prompt('请输入一个值')
        // let age = 18 
        // age = age+1
        num = num < 10 ? '0' + num : num
        alert(num)
    </script>
2.3 switch 语句

释义:
  • 找到跟小括号里数据全等的case值,并执行里面对应的代码
  • 若没有全等 === 的则执行default里的代码
  • 例:数据若跟值2全等,则执行代码2

注意事项

1. switch case语句一般用于等值判断,不适合于区间判断

2. switch case一般需要配合break关键字使用 没有break会造成case穿透

    <script>
        /* 案例:简单计算器
            需求:用户输入2个数字,然后输入 + - * / 任何一个,可以计算结果
            分析:
            ①:用户输入数字
            ②:用户输入不同算术运算符,可以去执行不同的运算(switch)
         */
        let num = +prompt('请输入第一个数字')
        let num1 = +prompt('请输入第二个数字')
        let num2 = prompt('请输入输入 + - * / 任何一个')
        let result
        switch (num2) {
            case '+':
                result = num + num1
                break;
            case '-':
                result = num - num1
                break;
            case '*':
                result = num * num1
                break;
            case '/':
                result = num / num1
                break;
            default:
                alert('没有符合选项')
                break;
        }
        alert(`结果是:${result}`)
    </script>
2.4 if 多分支语句和 switch的区别

共同点

  • 都能实现多分支选择, 多选1
  • 大部分情况下可以互换

区别:

  • switch…case语句通常处理case为比较确定值的情况,而if…else…语句更加灵活,通常用于范围判断(大于,等于某个范围)。
  • switch 语句进行判断后直接执行到程序的语句,效率更高,而if…else语句有几种判断条件,就得判断多少次
  • switch 一定要注意 必须是 === 全等,一定注意 数据类型,同时注意break否则会有穿透效

结论:

  • 当分支比较少时,if…else语句执行效率高。
  • 当分支比较多时,switch语句执行效率高,而且结构更清晰。

 (三)循环语句

1、 断点调试

作用:学习时可以帮助更好的理解代码运行,工作时可以更快找到bug

浏览器打开调试界面

  1. 按F12打开开发者工具
  2. 点到sources一栏
  3. 选择代码文件

断点:在某句代码上加的标记就叫断点,当程序执行到这句有标记的代码时会暂停下来

2、while循环

循环:重复执行一些操作

while:在..期间,while循环就是在满足条件期间,重复执行某些代码

路径:while循环基本语法、while循环三要素

2.1 while循环基本语法

释义:

  • 跟if语句很像,都要满足小括号里的条件为true才会进入 循环体 执行代码
  • while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,若满足又执行大括号里的代码,然后再回到小括号判断条件,直到括号内条件不满足,即跳出
2.2 while 循环三要素

循环的本质就是以某个变量为起始值,然后不断产生变化量,慢慢靠近终止条件的过程。

所以,while循环需要具备三要素

    <script>
        // 1. 变量的起始值
        let i = 1
        // 2. 终止条件
        while (i <= 3) {
            console.log('我会循环三次');
            // 3. 变量的变化量
            i++
        }

        /* 
            案例一
            在页面中打印输出10句“月薪过万”
         */
        let num = 1
        while (num <= 10) {
            document.write('月薪过万<br>')
            num++
        }

        /* 
            案例二:页面输出1 - 100
            核心思路: 利用 i, 因为正好和 数字对应
         */
        let num1 = 1;
        while (num1 <= 100) {
            document.write(num1)
            num1++
        }

        /*        
            案例三:计算从1加到100的总和并输出
            核心思路:
            声明累加和的变量 sum
            每次把 i 加到 sum 里面
         */
        let num2 = 1;
        let sum = 0
        while (num2 <= 100) {
            sum += num2
            num2++
        }
        document.write(`<br>1-100的和 = ${sum}`)

        /*     
            案例四:计算1 - 100之间的所有偶数和
            核心思路:
            声明累加和的变量 sum
            首先利用if语句把 i 里面是偶数筛选出来
            把 筛选的 i 加到 sum 里面
         */
        let num4 = 1
        let sum1 = 0
        while (num4 <= 100) {
            if (num4 % 2 === 0) {
                sum1 += num4
            }
            num4++
        }
        document.write(`<br>1-100的偶数和:${sum1}`)
    </script>

3、循环退出

3.1 循环结束
  • break:退出循环
  • continue:结束本次循环,继续下次循环
3.2 区别:
  • continue 退出本次循环,一般用于排除或者跳过某一个选项的时候, 可以使用continue
  • break 退出整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用

案例:简易ATM取款机案例

    <script>
        /* 
            需求:用户可以选择存钱、取钱、查看余额和退出功能
            分析:
            ①:循环的时候,需要反复提示输入框,所以提示框写到循环里面
            ②:退出的条件是用户输入了 4,如果是4,则结束循环,不在弹窗
            ③:提前准备一个金额预先存储一个数额
            ④:取钱则是减法操作, 存钱则是加法操作,查看余额则是直接显示金额
            ⑤:输入不同的值,可以使用switch来执行不同的操作
        */
        let money = 4000;
        while (true) {
            let str = +prompt(
                `请选择您的操作:
                1.取款
                2.存款
                3.查看余额
                4.退出`)
            switch (str) {
                case 1:
                    let qu = +prompt('输入你要取款的金额')
                    money -= qu
                    break;
                case 2:
                    let cun = +prompt('输入你要存款的金额')
                    money += cun
                    break;
                case 3:
                    alert(`您的余额为:${money}`)
                    break;
            }
            if (str === 4) {
                break
            }
        }
    </script>

4、for循环

4.1 for循环语法基本使用

作用:重复执行代码

好处:把声明起始值、循环条件、变化值学到一起,是最常用的循环形式

    <script>
        //利用for循环输出1~100岁
        let sum = 0
        for (let i = 1; i <= 100; i++) {
            sum += i
        }
        document.write('1-100的和' + sum)

        // 求1 - 100之间所有的偶数和
        let sum1 = 0
        for (let i = 1; i <= 100; i++) {
            if (i % 2 === 0) {
                sum1 += i
            }
        }
        document.write('<br>1-100的偶数和' + sum1)

        // 页面中打印5个小星星
        document.write('<br>')
        for (let i = 1; i <= 5; i++) {
            document.write('★')
        }

        /* 
            for循环的最大价值: 循环数组
            需求: 请将 数组[‘马超’,‘赵云’, ‘张飞’, ‘关羽‘,’黄忠’]依次打印出来
        */
        document.write('<br>')
        let arr = ['马超', '赵云', '张飞', '关羽', '黄忠']
        for (let i = 0; i < arr.length; i++) {
            document.write(arr[i] + ' ')
        }
    </script>
4.2 退出循环
  • continue 退出本次循环,一般用于排除或者跳过某一个选项的时候, 可以使用continue
  • break 退出整个for循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用

了解:

  • while(true) 来构造“无限”循环,需要使用break退出循环。
  • for(;;) 也可以来构造“无限”循环,同样需要使用break退出循环
4.3 for循环嵌套
一个循环里再套一个循环,一般用在for循环里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1464020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试真题-用连续自然数之和来表达整数-2023年OD统一考试(C卷)---python代码免费

题目&#xff1a; 代码 """ 题目分析&#xff1a; 一个整数 连续的自然数之和表示(非负整数&#xff09;输入&#xff1a; 一个整数T[1,1000] 输出&#xff1a; 输出多个表达式&#xff0c;自然数个数最少优先输出 最后一行&#xff0c; 输出“Result : 个数…

【监督学习之线性回归】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 目录 简述概要知识图谱 简述概要 了解什么是线性回归 知识图谱 监督学习中的线性回归是一种预测模型&#xff0c;它试图通过拟合一个线性方程来建立输入变量&#xff08;特征&#xff09;和输出变量&#xff08;目标值&#x…

JAVA实现数据导出到excel文件

开始 1. 需要引入依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version></dependency> 2. 核心代码 // 创建一个工作簿&#xff0c;也就是Excel文件 HSSFWorkb…

bat判断vmware 是否已安装

要通过批处理脚本&#xff08;.bat&#xff09;判断VMware是否已安装&#xff0c;您可以尝试以下方法&#xff1a; 检查VMware的进程 您可以检查VMware相关的进程是否在运行。例如&#xff0c;VMware Workstation的进程名通常是vmware-workstation.exe。 echo off tasklist /…

微信小程序开发学习笔记——2.8媒体组件image的src三种引入方式

>>跟着b站up主“咸虾米_”学习微信小程序开发中&#xff0c;把学习记录存到这方便后续查找。 课程连接&#xff1a; https://www.bilibili.com/video/BV19G4y1K74d?p11 image&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/component/image.html 一…

基于springboot+vue的服装生产管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

【Chrono Engine学习总结】4-vehicle-4.3-两个vehicle碰撞测试

由于Chrono的官方教程在一些细节方面解释的并不清楚&#xff0c;自己做了一些尝试&#xff0c;做学习总结。 今天突发奇想&#xff0c;想试一下&#xff0c;是否可以实现两个vehicle的碰撞&#xff1f; 1、两辆vehicle的仿真 官方提供了demo_VEH_TwoCars这个demo&#xff0c…

「C#」WPF学习笔记-基础类及继承关系

1、DependencyObject DependencyObject是WPF中依赖属性系统的核心&#xff0c;它为WPF的数据绑定、动画和属性共享等功能提供了支持&#xff0c;是一个非常重要的基类。 其主要特点和职责包括&#xff1a; 依赖属性系统&#xff1a;DependencyObject 是所有支持依赖属性的类…

js设计模式:观察者模式

作用: 和发布订阅模式基本类似。 当某一对象状态发生变化时,所有的观察者都会收到通知。 vue响应式原理就是很经典的案例,数据发生变化,通知各个依赖。 示例: class TaobaoShop{constructor(){this.list []}addSub(name,data){this.list.push({name,data})}pubUser(name,d…

Web3 基金会推出去中心化之声计划:投入高额 DOT 和 KSM ,助力去中心化治理

作者&#xff1a;Web3 Foundation Team 编译&#xff1a;OneBlock 原文&#xff1a;https://medium.com/web3foundation/decentralized-voices-program-93623c27ae43 Web3 基金会为 Polkadot 和 Kusama 创建了去中心化之声计划&#xff08;Decentralized Voices Program&…

【Java多线程】分析线程加锁导致的死锁问题以及解决方案

目录 1、线程加锁 2、死锁问题的三种经典场景 2.1、一个线程一把锁 2.2、两个线程两把锁 2.3、N个线程M把锁&#xff08;哲学家就餐问题&#xff09; 3、解决死锁问题 1、线程加锁 其中 locker 可以是任意对象&#xff0c;进入 synchronized 修饰的代码块, 相当于加锁&…

亚信安慧AntDB数据库为实时流数据构筑坚实防线

在数字化浪潮中&#xff0c;企业对实时流数据处理的依赖日益增强。在此背景下&#xff0c;AntDB数据库应运而生&#xff0c;提供一种创新性解决方案&#xff0c;专注于解决实时流数据处理中的数据容灾和一致性问题。AntDB的设计理念是确保在处理高吞吐量的流数据时&#xff0c;…

web前端安全性——CSRF跨站请求伪造

承接上篇讲述的XSS跨站脚本攻击 跨站请求伪造&#xff08;CSRF&#xff09; 1、概念 CSRF(Cross-site request forgery) 跨站请求伪造:攻击者诱导受害者进入第三方网站&#xff0c;在第三方网站中&#xff0c;向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注…

【Git】:标签功能

标签功能 一.标签操作二.推送远程标签 标签 tag &#xff0c;可以简单的理解为是对某次commit的⼀个标识&#xff0c;相当于起了⼀个别名。例如&#xff0c;在项⽬发布某个版本的时候&#xff0c;针对最后⼀次commit起⼀个v1.0这样的标签来标识⾥程碑的意义。这有什么⽤呢&…

代码随想录算法训练营第21天—回溯算法01 | ● 理论基础 ● *77. 组合

理论基础 回溯是一种纯暴力搜索的方法&#xff0c;它和递归相辅相成&#xff0c;通常是执行完递归之后紧接着执行回溯相较于以往使用的for循环暴力搜索&#xff0c;回溯能解决更为复杂的问题&#xff0c;如以下的应用场景应用场景 组合问题 如一个集合{1,2,3,4}&#xff0c;找…

【讨论】Web端测试和App端测试的不同,如何说得更有新意?

Web 端测试和 App 端测试是针对不同平台的上的应用进行测试&#xff0c;Web应用和App端的应用实现方式不同&#xff0c;测试时的侧重点也不一样。 Web端应用和App端应用的区别&#xff1a; 平台兼容性 安装方式 功能和性能 用户体验 更新和维护 测试侧重点有何不同 平台…

springboot208基于springboot物流管理系统

基于spring boot物流管理系统设计与实现 摘 要 社会发展日新月异&#xff0c;用计算机应用实现数据管理功能已经算是很完善的了&#xff0c;但是随着移动互联网的到来&#xff0c;处理信息不再受制于地理位置的限制&#xff0c;处理信息及时高效&#xff0c;备受人们的喜爱。…

想高薪就业鸿蒙HarmonyOS 开发岗位,到底该学习些啥?

鸿蒙是什么&#xff1f; 经过十多年的发展&#xff0c;传统移动互联网的增长红利已渐见顶。万物互联时代正在开启&#xff0c;应用的设备底座将从几十亿手机扩展到数百亿 IoT 设备。GSMA 预测到 2025 年&#xff0c;全球物联网终端连接数量将达 246 亿个&#xff0c;其中消费物…

redis源码阶段性完成

这个真的是耗费我很长的时间 一个是太忙了&#xff0c;一个是内容确实太多了 断断续续的&#xff0c;终于基本完成了&#xff0c;但也只限于基本哈 在这期间也阅读了相关书籍 其实书籍讲的都很好&#xff0c;讲了大体思路 但是&#xff0c;到具体实现细节就复杂的多了 因…

【2024 R1 版本更新】Ansys Speos

上期我们讲到了Ansys系列的三大光学软件于2024年的更新&#xff0c;在小宇快马加鞭的信息收集下&#xff0c;更加具体的内容也整理完毕了&#xff0c;一起来看看Ansys Speos又有哪些具体的功能更新吧~