JavaScript基础(二)—— 运算符、表达式与语句(if、switch、循环)

学习目标:

  1. 掌握常见运算符,为程序“能思考”做准备

  2. 掌握分支语句,让程序具备判断能力

  3. 掌握循环语句,让程序具备重复执行能力

一、运算符

1.  赋值运算符

对变量进行赋值的运算符,能够使用赋值运算符简化代码。

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

  • 其他赋值运算符:+=、-=、*=、/=、%=

  • 使用这些运算符可以在对变量赋值时进行快速操作

2. 一元运算符

众多的 JavaScript 的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符。

  • 自增:++,作用,让变量的值 +1

  • 自减:--,作用,让变量的值 -1

  • 使用场景:经常用于计数来使用。 比如进行10次操作,用它来计算进行了多少次了

  • 自增运算符的用法:

前置自增:先自加再使用

后置自增:先使用再自加

1. 前置自增和后置自增单独使用没有区别

2. 一般开发中我们都是独立使用

3. 后面 i++ 后置自增会使用相对较多,并且都是单独使用

let i = 1
console.log(i++ + ++i + i)

3. 比较运算符

比较运算符的介绍,使用场景:比较两个数据大小、是否相等。

  • 比较运算符:

  1. > : 左边是否大于右边

  2. <: 左边是否小于右边

  3. >=: 左边是否大于或等于右边

  4. <=: 左边是否小于或等于右边

  5. ==: 左右两边值是否相等

  6. ===: 左右两边是否类型和值都相等

  7. !==: 左右两边是否不全等

比较结果为boolean类型,即只会得到 true 或 false。

对比:

= 单等是赋值

== 是判断

=== 是全等

开发中判断是否相等,强烈推荐使用 ===

  • 字符串比较,是比较的字符对应的ASCII码

从左往右依次比较,如果第一位一样再比较第二位,以此类推。

  • NaN不等于任何值,包括它本身

涉及到"NaN“ 都是 false。

  • 尽量不要比较小数,因为小数有精度问题

  • 不同类型之间比较会发生隐式转换

  1. 最终把数据隐式转换转成number类型再比较

  2. 所以开发中,如果进行准确的比较我们更喜欢 === 或者 !==

4. 逻辑运算符

掌握逻辑运算符,为程序“能思考”做准备。

提问:如果我想判断一个变量 num 是否大于5且小于10,怎么办?

错误写法:

5 < num < 10

使用场景:逻辑运算符用来解决多重条件判断

正确写法:

 num > 5 && num < 10
符号名称日常读法特点口诀
&&逻辑与并且符号两边都为true结果才为true一假则假
||逻辑或或者符号两边有一个true就为true一真则真
!逻辑非取反true变false false变true真变假,假变真

5. 运算符优先级

掌握运算符优先级,能判断运算符执行的顺序。

  • 一元运算符里面的逻辑非优先级很高
  • 逻辑与逻辑或 优先级高
let a = 3 > 5 && 2 < 7 && 3 == 4
console.log(a);  
​
let b = 3 <= 4 || 3 > 1 || 3 != 2 
console.log(b); 
​
let c = 2 === "2"
console.log(c);  
​
let d = !c || b && a 
console.log(d);

二、语句

1. 表达式和语句

  • 表达式

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

  • 语句

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

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

  • 区别

    • 表达式:因为表达式可被求值,所以它可以写在赋值语句的右侧。
    • 语句:而语句不一定有值,所以比如 alert() for和break 等语句就不能被用于赋值。
    • 某些情况,也可以把表达式理解为表达式语句,因为它是在计算结果,但不是必须的成分 (例如continue语句)

2. 分支语句

掌握流程控制,写出能“思考”的程序。

程序三大流程控制语句

  1. 从上往下执行几句,这种叫顺序结构

  2. 有的时候要根据条件选择执行代码,这种就叫分支结构

  3. 某段代码被重复执行,就叫循环结构

分支语句

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

分支语句包含:

  1. If分支语句

  2. 三元运算符

  3. switch 语句

if语句

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

if (条件) {满足条件要执行的代码
}
​
if (条件) {满足条件执行的代码
} else {不满足条件执行的代码
}
​
if (条件) {满足条件执行的代码
} else if (条件) {满足条件要执行的代码
} else {不满足条件执行的代码
}

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

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

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

三元运算符

使用场景: 其实是比 if 双分支 更简单的写法,可以使用 三元表达式,一般用来取值

符号:? 与 : 配合使用

switch语句

找到跟小括号里数据全等的case值,并执行里面对应的代码

若没有全等 === 的则执行default里的代码

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

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

循环结构

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

  • 浏览器打开调试界面

1.点到浏览器按F12打开开发者工具

2.Sources一栏

3.选择代码文件

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

while 循环

循环:重复执行一些操作

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

跟if语句很像,都要满足小括号里的条件为true才会进入 循环体 执行代码

while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,若满足又执行大括号里的代码,然后再回到小括号判断条件,直到括号内条件不满足,即跳出

while循环三要素:

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

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

1.变量起始值

2.终止条件(没有终止条件,循环会一直执行,造成死循环)

3.变量变化量(用自增或者自减)

循环退出
  1. continue:结束本次循环,继续下次循环

  2. break:跳出所在的循环

区别:

  1. continue 退出本次循环,一般用于排除或者跳过某一个选项的时候, 可以使用continue

  2. break 退出整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用

for 循环

好处:把声明起始值、循环条件、变化值写到一起,让人一目了然,它是最常使用的循环形式

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

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

for循环和while循环有什么区别

  1. 当如果明确了循环的次数的时候推荐使用for循环

  2. 当不明确循环的次数的时候推荐使用while循环

for循环嵌套:一个循环里再套一个循环,一般用在for循环里

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

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

相关文章

推荐系统|概要03_AB测试

文章目录 A/B测试问题流量不够用解决方案——分层实验 Holdout 机制 A/B测试 其中小流量是指对部分的用户先尝试改进的算法模型&#xff0c;而非全部。若为全部&#xff0c;如果算法模型存在问题&#xff0c;可能会导致用户体验差&#xff0c;导致用户流失&#xff0c;而小流量…

深入探究iframe:网页嵌入的魔法盒子(下)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

DATAX改造支持geometry类型数据同步

数据库使用postgresql安装了postgis插件存储了geometry空间数据&#xff0c;想使用datax做数据同步&#xff0c;但datax本身不支持geometry类型数据&#xff0c;如何改造呢&#xff1f; 1.首先下载已改造支持geometry类型的datax引擎&#xff0c;下载地址 https://download.c…

Jmeter性能测试: Jmeter 5.6.3 分布式部署

目录 一、实验 1.环境 2.jmeter 配置 slave 代理压测机 3.jmeter配置master控制器压测机 4.启动slave从节点检查 5.启动master主节点检查 6.运行jmeter 7.观察jmeter-server主从节点变化 二、问题 1.jmeter 中间请求和响应乱码 一、实验 1.环境 &#xff08;1&#…

oracle数仓rac两个节点查询耗时不一致问题处理

问题描述 数据库节点1查询比节点2查询慢。现场操作应用发现发现同一sql语句在节点2上只要2分钟左右&#xff0c;在节点1&#xff0c;该条sql执行要超过30分钟。 处理过程 根据问题&#xff0c;初步判断是由于错误的执行计划&#xff0c;导致性能问题&#xff0c;但实际上对两…

编程流程图

对于复杂流程&#xff0c;我做开发之前一般会 先画一下流程图。特别是多个部门有交叉的情况下&#xff1a; processOn&#xff1a; 这个是我之前 一直的选择&#xff0c;他可以画上面的这些&#xff0c;流程图&#xff0c;网页操作&#xff0c;但是他不是免费的&#xff0c;查过…

JavaScript事件冒泡和捕获

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 事件传播是JavaScript中非常重要的一个概念,它描述了从嵌套元素到祖先…

【C++干货铺】哈希结构在C++中的应用

目录 unordered系列关联式容器 unordered_map unordered_map的接口说明 1.unordered_map的构造 2. unordered_map的容量 3. unordered_map的迭代器 4. unordered_map的元素访问 5. unordered_map的查询 6. unordered_map的修改操作 7. unordered_map的桶操作 底层结构 …

mysql+node.js+html+js完整扫雷项目

一.下载 可以直接下载绑定资源&#xff0c; 也可以访问&#xff1a;克隆仓库&#xff1a;mine_clearance: mysqlnode.jshtmljs完整扫雷项目 (gitee.com) 二.运行sql数据文件 将mysql数据文件导入到本地 先在本地localhost里创建数据库 mine_clearance&#xff0c; 然后如图&…

elementUI实现selecttree自定义下拉框树形组件支持多选和搜索

elementUI实现selecttree自定义下拉框树形组件支持多选和搜索 效果图定义子组件父组件应用 效果图 定义子组件 主要结合el-select和el-tree两个组件改造的。 <template><div class"selectTree"><el-select filterable :filter-method"filterMe…

微软给Windows 11增添了一个由AI支持的‘Voice Clarity’功能

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

linux搭建jupyter

查看虚拟环境 conda info --envs进入虚拟环境 conda activate my_env pip install jupyter pip install ipykernel1. jupyter notebook启动 1.1 创建临时jupyter notebook任务 jupyter notebook --ip0.0.0.0 --no-browser --allow-root --notebook-dir/home/xxx1.2 jupyter…

共用体与枚举法,链表的学习

结构体注意事项&#xff1a; 1.结构体类型可以定义在main函数里面&#xff0c;但是此时的作用域就被限定在该函数中 2.结构体的的的定义的形式&#xff1a;a.先定义类型&#xff0c;后定义变量-----struct stu s b.定义类型的同时&#xff0c;定义了变量&#xff1a;struct…

Notion 开源替代品:兼容 Miro 绘图 | 开源日报 No.162

toeverything/AFFiNE Stars: 25.6k License: NOASSERTION AFFiNE 是下一代知识库&#xff0c;将规划、排序和创建集于一身。它是一个注重隐私、开源、可定制且即插即用的替代方案&#xff0c;可以与 Notion 和 Miro 相媲美。主要功能和优势包括&#xff1a; 超融合&#xff1…

本地部署GeoServe服务并结合内网穿透实现任意浏览器远程访问

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除、插入…

Python代码重构库之rope使用详解

概要 Python是一门强大的编程语言,但在大型项目中,维护和重构代码可能会变得复杂和困难。为了提高开发人员的效率和准确性,有许多工具可用于辅助代码重构和智能代码补全。其中之一是Python Rope。 Python Rope是一个用于Python编程语言的强大工具,它提供了丰富的功能,包…

【RT-DETR有效改进】利用YOLO-MS的MSBlock模块改进ResNet中的Bottleneck(RT-DETR深度改进)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文给大家带来的改进机制是利用YOLO-MS提出的一种针对于实时目标检测的MSBlock模块(其其实不能算是Conv但是其应该是一整个模块),我们将其用于替换我们ResNet中Basic组合出一种新的结构,来替换我们网络中的…

Spring Boot 整合 Redis 使用教程

作为开发者&#xff0c;相信大家都知道 Redis 的重要性。Redis 是使用 C 语言开发的一个高性能键值对数据库&#xff0c;是互联网技术领域使用最为广泛的存储中间件&#xff0c;它是「Remote Dictionary Service」的首字母缩写&#xff0c;也就是「远程字典服务」。 Redis 以超…

PyTorch复现网络模型VGG

VGG 原论文地址&#xff1a;https://arxiv.org/abs/1409.1556VGG是Visual Geometry Group&#xff08;视觉几何组&#xff09;的缩写&#xff0c;它是一个在计算机视觉领域中非常有影响力的研究团队&#xff0c;主要隶属于牛津大学的工程系和科学系。VGG以其对卷积神经网络&am…

Vue3_基础使用

vue2的选项式与vue3的组合式区别&#xff1a; 选项式&#xff1a;vue2中数据与方法计算属性等等&#xff0c;针对一个数据的处理在不同的配置中&#xff0c;当业务复杂时很难维护&#xff0c;修改起来也不好查找。 vue3的组合式&#xff1a;将针对数据的方法计算属性等等放在一…