JavaScript 基础 - 第2天

news2024/11/25 19:10:30

理解什么是流程控制,知道条件控制的种类并掌握其对应的语法规则,具备利用循环编写简易ATM取款机程序能力

  • 运算符
  • 语句
  • 综合案例

运算符

算术运算符

数字是用来计算的,比如:乘法 * 、除法 / 、加法 + 、减法 - 等等,所以经常和算术运算符一起。

算术运算符:也叫数学运算符,主要包括加、减、乘、除、取余(求模)等

运算符

作用

+

求和

-

求差

*

求积

/

求商

%

取模(取余数),开发中经常用于作为某个数字是否被整除

注意:在计算失败时,显示的结果是 NaN (not a number)

// 算术运算符
console.log(1 + 2 * 3 / 2) //  4 
let num = 10
console.log(num + 10)  // 20
console.log(num + num)  // 20

// 1. 取模(取余数)  使用场景:  用来判断某个数是否能够被整除
console.log(4 % 2) //  0  
console.log(6 % 3) //  0
console.log(5 % 3) //  2
console.log(3 % 5) //  3

// 2. 注意事项 : 如果我们计算失败,则返回的结果是 NaN (not a number)
console.log('pink老师' - 2)
console.log('pink老师' * 2)
console.log('pink老师' + 2)   // pink老师2

赋值运算符

赋值运算符:对变量进行赋值的运算符

=     将等号右边的值赋予给左边, 要求左边必须是一个容器

运算符

作用

+=

加法赋值

-+

减法赋值

*=

乘法赋值

/=

除法赋值

%=

取余赋值

<script>
let num = 1
// num = num + 1
// 采取赋值运算符
// num += 1
num += 3
console.log(num)
</script>

自增/自减运算符

符号

作用

说明

++

自增

变量自身的值加1,例如: x++

--

自减

变量自身的值减1,例如: x--

  1. 在前和在后在单独使用时二者并没有差别,而且一般开发中我们都是独立使用
  2. ++在后(后缀式)我们会使用更多

注意:

  1. 只有变量能够使用自增和自减运算符
  2. 、-- 可以在变量前面也可以在变量后面,比如: x  或者  ++x

<script>
    // let num = 10
    // num = num + 1
    // num += 1
    // // 1. 前置自增
    // let i = 1
    // ++i
    // console.log(i)

    // let i = 1
    // console.log(++i + 1)
    // 2. 后置自增
    // let i = 1
    // i++
    // console.log(i)
    // let i = 1
    // console.log(i++ + 1)

    // 了解 
    let i = 1
    console.log(i++ + ++i + i)
  </script>

比较运算符

使用场景:比较两个数据大小、是否相等,根据比较结果返回一个布尔值(true / false)

运算符

作用

>

左边是否大于右边

<

左边是否小于右边

>=

左边是否大于或等于右边

<=

左边是否小于或等于右边

===

左右两边是否类型

都相等(重点)

==

左右两边

是否相等

!=

左右值不相等

!==

左右两边是否不全等

<script>
  console.log(3 > 5)
  console.log(3 >= 3)
  console.log(2 == 2)
  // 比较运算符有隐式转换 把'2' 转换为 2  双等号 只判断值
  console.log(2 == '2')  // true
  // console.log(undefined === null)
  // === 全等 判断 值 和 数据类型都一样才行
  // 以后判断是否相等 请用 ===  
  console.log(2 === '2')
  console.log(NaN === NaN) // NaN 不等于任何人,包括他自己
  console.log(2 !== '2')  // true  
  console.log(2 != '2') // false 
  console.log('-------------------------')
  console.log('a' < 'b') // true
  console.log('aa' < 'ab') // true
  console.log('aa' < 'aac') // true
  console.log('-------------------------')
</script>

逻辑运算符

使用场景:可以把多个布尔值放到一起运算,最终返回一个布尔值

符号

名称

日常读法

特点

口诀

&&

逻辑与

并且

符号两边有一个假的结果为假

一假则假

||

逻辑或

或者

符号两边有一个真的结果为真

一真则真

!

逻辑非

取反

true变false  false变true

真变假,假变真

A

B

A && B

A || B

!A

false

false

false

false

true

false

true

false

true

true

true

false

false

true

false

true

true

true

true

false

<script>
    // 逻辑与 一假则假
    console.log(true && true)
    console.log(false && true)
    console.log(3 < 5 && 3 > 2)
    console.log(3 < 5 && 3 < 2)
    console.log('-----------------')
    // 逻辑或 一真则真
    console.log(true || true)
    console.log(false || true)
    console.log(false || false)
    console.log('-----------------')
    // 逻辑非  取反
    console.log(!true)
    console.log(!false)

    console.log('-----------------')

    let num = 6
    console.log(num > 5 && num < 10)
    console.log('-----------------')
  </script>

运算符优先级

逻辑运算符优先级: !> && >  ||

语句

表达式和语句

分支语句

分支语句可以根据条件判定真假,来选择性的执行想要的代码

分支语句包含:

  1. if分支语句(重点)
  2. 三元运算符
  3. switch语句

if 分支语句

语法:

if(条件表达式) {
  // 满足条件要执行的语句
}

小括号内的条件结果是布尔值,为 true 时,进入大括号里执行代码;为false,则不执行大括号里面代码

小括号内的结果若不是布尔类型时,会发生类型转换为布尔值,类似Boolean()

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

<script>
    // 单分支语句
    // if (false) {
    //   console.log('执行语句')
    // }
    // if (3 > 5) {
    //   console.log('执行语句')
    // }
    // if (2 === '2') {
    //   console.log('执行语句')
    // }
    //  1. 除了0 所有的数字都为真
    //   if (0) {
    //     console.log('执行语句')
    //   }
    // 2.除了 '' 所有的字符串都为真 true
    // if ('pink老师') {
    //   console.log('执行语句')
    // }
    // if ('') {
    //   console.log('执行语句')
    // }
    // // if ('') console.log('执行语句')

    // 1. 用户输入
    let score = +prompt('请输入成绩')
    // 2. 进行判断输出
    if (score >= 700) {
      alert('恭喜考入黑马程序员')
    }
    console.log('-----------------')

  </script>

if双分支语句

如果有两个条件的时候,可以使用 if else 双分支语句

if (条件表达式){
  // 满足条件要执行的语句
} else {
  // 不满足条件要执行的语句
}

例如:

 <script>
    // 1. 用户输入
    let uname = prompt('请输入用户名:')
    let pwd = prompt('请输入密码:')
    // 2. 判断输出
    if (uname === 'pink' && pwd === '123456') {
      alert('恭喜登录成功')
    } else {
      alert('用户名或者密码错误')
    }
  </script>

if 多分支语句

使用场景: 适合于有多个条件的时候

 <script>
    // 1. 用户输入
    let score = +prompt('请输入成绩:')
    // 2. 判断输出
    if (score >= 90) {
      alert('成绩优秀,宝贝,你是我的骄傲')
    } else if (score >= 70) {
      alert('成绩良好,宝贝,你要加油哦~~')
    } else if (score >= 60) {
      alert('成绩及格,宝贝,你很危险~')
    } else {
      alert('成绩不及格,宝贝,我不想和你说话,我只想用鞭子和你说话~')
    }
  </script>

三元运算符(三元表达式)

使用场景: 一些简单的双分支,可以使用  三元运算符(三元表达式),写起来比 if  else双分支 更简单

符号:? 与 : 配合使用

语法:

条件 ? 表达式1 : 表达式2

例如:

// 三元运算符(三元表达式)
// 1. 语法格式
// 条件 ? 表达式1 : 表达式2 

// 2. 执行过程 
// 2.1 如果条件为真,则执行表达式1
// 2.2 如果条件为假,则执行表达式2

// 3. 验证
// 5 > 3 ? '真的' : '假的'
console.log(5 < 3 ? '真的' : '假的')

// let age = 18 
// age = age + 1
//  age++

// 1. 用户输入 
let num = prompt('请您输入一个数字:')
// 2. 判断输出- 小于10才补0
// num = num < 10 ? 0 + num : num
num = num >= 10 ? num : 0 + num
alert(num)

switch语句(了解)

使用场景: 适合于有多个条件的时候,也属于分支语句,大部分情况下和 if多分支语句 功能相同

注意:

  1. switch case语句一般用于等值判断, if适合于区间判断
  2. switchcase一般需要配合break关键字使用 没有break会造成case穿透
  3. if 多分支语句开发要比switch更重要,使用也更多

例如:

// switch分支语句
// 1. 语法
// switch (表达式) {
//   case 值1:
//     代码1
//     break

//   case 值2:
//     代码2
//     break
//   ...
//   default:
//     代码n
// }

<script>
  switch (2) {
    case 1:
    console.log('您选择的是1')
    break  // 退出switch
    case 2:
    console.log('您选择的是2')
    break  // 退出switch
    case 3:
    console.log('您选择的是3')
    break  // 退出switch
    default:
    console.log('没有符合条件的')
  }
</script>

断点调试

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

浏览器打开调试界面

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

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

循环语句

使用场景:重复执行 指定的一段代码,比如我们想要输出10次 '我学的很棒'

学习路径:

1.while循环

2.for 循环(重点)

while循环

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

语法:

while (条件表达式) {
   // 循环体    
}

例如:

// while循环: 重复执行代码

// 1. 需求: 利用循环重复打印3次 '月薪过万不是梦,毕业时候见英雄'
let i = 1
while (i <= 3) {
  document.write('月薪过万不是梦,毕业时候见英雄~<br>')
  i++   // 这里千万不要忘了变量自增否则造成死循环
}

循环三要素:

1.初始值 (经常用变量)

2.终止条件

3.变量的变化量

例如:

<script>
  // // 1. 变量的起始值
  // let i = 1
  // // 2. 终止条件
  // while (i <= 3) {
  //   document.write('我要循环三次 <br>')
  //   // 3. 变量的变化量
  //   i++
  // }
  // 1. 变量的起始值
  let end = +prompt('请输入次数:')
let i = 1
// 2. 终止条件
while (i <= end) {
  document.write('我要循环三次 <br>')
  // 3. 变量的变化量
  i++
}

</script>

中止循环

break   中止整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用(提高效率)

continue  中止本次循环,一般用于排除或者跳过某一个选项的时候

<script>
    // let i = 1
    // while (i <= 5) {
    //   console.log(i)
    //   if (i === 3) {
    //     break  // 退出循环
    //   }
    //   i++

    // }


    let i = 1
    while (i <= 5) {
      if (i === 3) {
        i++
        continue
      }
      console.log(i)
      i++

    }
  </script>

无限循环

1.while(true) 来构造“无限”循环,需要使用break退出循环。(常用)

2.for(;;) 也可以来构造“无限”循环,同样需要使用break退出循环。

// 无限循环  
// 需求: 页面会一直弹窗询问你爱我吗?
// (1). 如果用户输入的是 '爱',则退出弹窗
// (2). 否则一直弹窗询问

// 1. while(true) 无限循环
// while (true) {
//   let love = prompt('你爱我吗?')
//   if (love === '爱') {
//     break
//   }
// }

// 2. for(;;) 无限循环
for (; ;) {
  let love = prompt('你爱我吗?')
  if (love === '爱') {
    break
  }
}

综合案例-ATM存取款机

分析:

①:提示输入框写到循环里面(无限循环)

②:用户输入4则退出循环 break

③:提前准备一个金额预先存储一个数额 money

④:根据输入不同的值,做不同的操作

    (1)  取钱则是减法操作, 存钱则是加法操作,查看余额则是直接显示金额

    (2) 可以使用 if else if 多分支 来执行不同的操作

完整代码:

<script>
  // 1. 开始循环 输入框写到 循环里面
  // 3. 准备一个总的金额
  let money = 100
while (true) {
  let re = +prompt(`
请您选择操作:
1.存钱
2.取钱
3.查看余额
4.退出
`)
  // 2. 如果用户输入的 4 则退出循环, break  写到if 里面,没有写到switch里面, 因为4需要break退出循环
  if (re === 4) {
    break
  }
  // 4. 根据输入做操作
  switch (re) {
    case 1:
      // 存钱
      let cun = +prompt('请输入存款金额')
      money = money + cun
      break
      case 2:
      // 存钱
      let qu = +prompt('请输入取款金额')
      money = money - qu
      break
      case 3:
      // 存钱
      alert(`您的银行卡余额是${money}`)
      break
  }
}
</script>

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

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

相关文章

【window系统】win10家庭版没有hyper-V的选项 问题解决办法

目录 事件起因环境和工具操作过程参考内容结束语 事件起因 在给我的新电脑安装docker和对应的Linux环境时 在 控制面版-程序-启用该或关闭Windows功能 时 没有找到对应网上那种教程里的Hyper-V的功能的选项&#xff0c;查找了一下&#xff0c;说是win10家庭版没有这个功能 专…

NEFU数字图像处理(5)图像压缩编码

一、概述 1.1简介 图像压缩编码的过程是在图像存储或传输之前进行&#xff0c;然后再由压缩后的图像数据&#xff08;编码数据&#xff09;恢复出原始图像或者是原始图像的近似图像 无损压缩&#xff1a;在压缩过程中没有信息损失&#xff0c;可由编码数据完全恢复出原始图像有…

动态路由协议OSPF项目部署(二)

1. 静态和动态路由的区别&#xff1b; 2. OSPF协议通信过程与部署&#xff1b; 3. OSPF协议在项目上的应用场景 - OSPF - 开放式最短路径优先 - 一个动态路由协议 - 路由器转发数据 - 路由器需要一张地图 - 路由表 - 路由表如何构建的&#xff1f; - 依靠手动 或…

selenium自动化测试入门 —— 浏览器多窗口切换!

有时web应用会打开多个浏览器窗口&#xff0c;当我们要定位新窗口中的元素时&#xff0c;我们需要将webDriver的handle&#xff08;句柄&#xff09;指定到新窗口。 什么意思&#xff1f; 假设我们打开web应用&#xff0c;在系统运行过程中重新打开一个新窗口&#xff08;可以…

短视频平台Roposo入驻印尼,会成为下一个Tiktok吗

Roposo是一个印度本土的短视频平台&#xff0c;功能和风格都和Tiktok很相似。 早在2020年7月&#xff0c;印度下令封禁了多个app&#xff0c;其中就包括了TikTok。在那之前&#xff0c;TikTok已经在印度累计了约2亿的用户&#xff0c;基数已经非常的大&#xff0c;那么被封禁之…

ESP32网络开发实例-Web服务器显示BMP180传感器数据

Web服务器显示BMP180传感器数据 文章目录 Web服务器显示BMP180传感器数据1、BMP180介绍2、软件准备3、硬件准备4、代码实现本文将介绍如何在ESP32的Web服务器显示BMP180数据。BMP180传感器可用于测量温度、压力和高度。 我们还可以使用此传感器测量海平面和实际高度的压力。 1、…

荒野大镖客emp.dll文件丢失的怎么办,快速修复游戏dll问题

在玩荒野大镖客这款游戏的过程中&#xff0c;我遇到了一个令人困扰的问题——emp.dll文件丢失。emp.dll是荒野大镖客游戏中的一个动态链接库文件&#xff0c;它负责管理游戏中的一些功能模块。当这个文件丢失时&#xff0c;游戏可能无法正常运行&#xff0c;导致一些功能无法使…

Python武器库开发-常用模块之configparser模块(十六)

configparser模块(十六) ConfigParser模块在python3中修改为configparser.这个模块定义了一个ConfigParser类&#xff0c;该模块的作用就是用来读取配置文件的&#xff0c;使用模块中的RawConfigParser()、ConfigParser()、 SafeConfigParser()这三个方法&#xff0c;创建一个…

Linux实现简易shell

文章目录 &#x1f984;0. shell&#x1f42e;1. 交互及获取命令行&#x1f437;2. 解析命令行&#x1f42f;3. 执行命令行&#x1f405;3.1 普通命令&#x1f405;3.2 内建命令 &#x1f981;4. 主函数逻辑及演示 本章代码gitee仓库&#xff1a;简易shell &#x1f984;0. she…

Python自动化测试如何自动生成测试用例?

传统的测试用例需要测试或者开发人员将用户的操作用代码表示出来&#xff0c;通过断言判断是否和预期一致&#xff0c;写测试用例也占用了部分时间&#xff0c;加上版本迭代测试用例的维护成本也较高&#xff0c;于是基于无埋点的需求相结合自动化测试来检测埋点&#xff0c;及…

行情分析——加密货币市场大盘走势(11.3)

大饼昨日与今日目前都是下跌态势&#xff0c;近期依然要保持逢低做多的策略。现在下跌&#xff0c;可以继续等待&#xff0c;也可以入场一部分仓位的多单&#xff0c;回调才是给机会上车。MACD日线来看&#xff0c;会继续回调&#xff0c;因此这个位置还是可以在等等。 以太昨日…

实践笔记-docker-compose安装

docker-compose 1.在线安装2.离线安装 1.在线安装 # github下载&#xff08;太慢了或者直接下载不了&#xff09; curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose # daocloud下载 c…

【MySQL】015-MySQL索引

【MySQL】015-MySQL索引 文章目录 【MySQL】015-MySQL索引一、MySQL索引是什么1、概述2、好处3、缺点4、索引的使用场景5、常用命令查看数据表上建的索引 二、索引的分类1、三大类2、为什么使用B树作为索引在疑问为什么使用B树这种数据结构之前&#xff0c;先想想什么样的数据结…

网络编程——以太网协议

一&#xff0c;以太网格式 1.1目的地址 这个地址不是IP地址&#xff0c;而是网络中的另一套地址体系&#xff0c;mac 地址&#xff08;物理地址&#xff09;&#xff0c;这个地址的作用与IP地址有一定的重合。因为网络层协议与应用层协议是各自独立被开发的&#xff0c;所以地…

黄仁勋:英伟达预言 2 年内行业将面目全非 一个词形容AI:Unbelievable

本心、输入输出、结果 文章目录 黄仁勋&#xff1a;英伟达预言 2 年内行业将面目全非 一个词形容AI&#xff1a;Unbelievable前言【访谈内容】一个词形容AI&#xff1a;Unbelievable创立英伟达“比想象中难一百万倍”相关图片传送门弘扬爱国精神 黄仁勋&#xff1a;英伟达预言 …

贷款行业极难获客,怎么获取实时客户数据?

我们能想象当客户有贷款需求时会发生什么吗&#xff1f; 客户可能会打开手机搜索“如何借款”、“哪笔贷款利息低”、“最多能借多少钱”、“贷款需要什么条件”等关键词&#xff0c;然后&#xff0c;客户点击进入第一个链接&#xff0c;然后填写他们的姓名和电话号码来测试他…

浅谈无源供电无线测温在线监测系统应用方案

安科瑞 崔丽洁 摘要&#xff1a;无源供电无线测温在线监测系统是一种基于声表面波技术的测温技术&#xff0c;在变电站监测方面得到了很好的技术实践应用。本文对无源供电无线测温在线监测系统研究应用进行分析研究。 关键词&#xff1a;设备检测&#xff1b;无线测温。 引言 在…

vcruntime140.dll无法继续执行代码修复教程

在计算机的世界里&#xff0c;我们经常会遇到各种各样的问题&#xff0c;其中之一就是“vcruntime140.dll缺失”。这个问题可能会影响到我们的正常使用&#xff0c;但是别担心&#xff0c;今天我就来给大家分享一下关于vcruntime140.dll缺失的4种修复方案。 首先&#xff0c;我…

C#完成XML文档节点的自动计算功能

一个项目涉及XML文档中节点的自动计算&#xff0c;就是XML文档的每个节点都参与运算&#xff0c;要求&#xff1a; ⑴如果节点有计算公式则按照计算公式进行&#xff1b; ⑵如果节点没有计算公式则该节点的值就是所有子节点的值之和&#xff1b; ⑶节点有4种类型&#xff0c;计…

内网穿透实现远程访问,如何满足信息安全需求?

内网穿透技术是一种将内网服务映射到外网&#xff0c;从而实现远程访问的技术。它的出现为企业及个人带来了便利&#xff0c;但同时也带来了一定的安全风险。因此&#xff0c;确保内网穿透远程访问内网服务的安全性显得尤为重要。 贝锐旗下内网穿透兼动态域名解析品牌花生壳&am…