JS-运算符和流程控制语句
1. 运算符
1.1 算术运算符
数字可以有很多操作,比如,乘法 * 、除法 / 、加法 + 、减法 - 等等,所以经常和算术运算符一起
数学运算符也叫算术运算符,主要包括加、减、乘、除、取余(求模)。
+
:求和-
:求差*
:求积/
:求商%
:取模,即求余数(开发中经常作为判断某个数字是否被整除来使用)
算术运算符优先级:
同时使用多个运算符编写程序时,会按着某种顺序先后执行,我们称为优先级。
JavaScript中 优先级越高越先被执行,优先级相同时以书从左向右执行。
* / %
优先级相同+ -
优先级相同* / %
优先级大于+ -
- 使用
()
可以提升优先级
1.2 赋值运算符
对变量进行赋值的运算符
=:最常见的赋值运算符,将等号右边的值赋予给等号左边,此时左边要求必须是一个容器。
其它赋值运算符:+= -= *= /= %=
1.3 一元运算符
众多的 JavaScript 的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符
比较典型的一元运算符:++ --
++
自增:使变量的值加1--
自减:使变量的值减1
自增运算符的用法:
- 前置自增:先自加再使用
- 后置自增:先使用再自加
- 前置自增和后置自增在单独使用时没有任何区别。
使用场景:经常用来计数。
let i = 1; console.log(i++ + ++i + i) //7
1.4 比较运算符
用于比较两个数据大小
>
:大于<
:小于>=
:大于等于<=
:小于等于==
:值是否相等===
:值和类型是否都相等(一般使用这个)!==
:左右两边是否不全等(一般使用这个)
比较规则:
- 字符串比较,是比较的字符对应的ASCII码值
- 从左往右依次比较
- 如果第一位相等再比较第二位,以此类推
- NaN 不等于任何值,包括它本身,且涉及NaN的比较公式结果都是 false
- 尽量不要比较小数,因为小数有精度问题
- 不同类型之间比较会发生隐式转换
- 最终把数据隐式转换转成number类型再比
- 所以开发中,如果进行准确的比较我们更喜欢 === 或者 !==
- 如果是布尔值参与比较,布尔值会转换成数字0和1
- 对于数字来说,只有0是假,其余都是真
- 对于字符串来说,只有空字符串''是假,其余都是真
1.5 逻辑运算符
使用场景:逻辑运算符用来解决多重条件判断
1.6 运算符优先级
- 一元运算符里面的逻辑非优先级很高
- 逻辑与比逻辑或优先级高
1.7 三元运算符
格式: 条件 ? 满足条件执行的代码 :不满足条件执行的代码
一般用来取值
<!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打印,不足10前面补0 let num = +prompt('请输入一个数') num < 10 ? document.write('0'+num) : document.write(num) </script> </body> </html>
2. 语句
表达式和语句的区别?
表达式:表达式可被求值,所以它可以写在赋值语句的右侧。如:num = 3 + 4
语句:而语句不一定有值,所以比如 alert() for和break 等语句就不能被用于赋值
程序有三大流程控制语句:
- 顺序结构
- 分支结构
- 循环结构
2.1 If 分支语句
分支语句可以让我们有选择性的执行想要的代码
//单分支 if(条件){ 满足条件执行代码 }
- 括号内的条件为true时,进入大括号里执行代码
- 小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型
- 如果大括号只有一个语句,大括号可以省略,但是,不提倡这么做~
//双分支 if(条件){ 满足条件执行代码 } else { 不满足条件执行代码 }
//多分支 if(条件1){ 代码1 } else if(条件2) { 代码2 } else { 代码3 }
- 先判断条件1,若满足条件1就执行代码1,其他不执行
- 若不满足则向下判断条件2,满足条件2执行代码2,其他不执行
- 若依然不满足继续往下判断,依次类推
- 若以上条件都不满足,执行else里的代码3
- 可以写N个条件
2.2 switch 分支语句
switch case语句一般用于等值判断,不适合于区间判断。
switch case一般需要配合break关键字使用 没有break会造成case穿透。
switch(数据){ case 值1: 代码1 break case 值2: 代码2 break default: 代码3 break }
- 找到跟小括号里数据全等的case值,并执行里面对应的代码
- 若没有全等 === 的则执行default里的代码
2.3 while 循环语句
重复执行一些操作, while : 在…. 期间, 所以 while循环 就是在满足条件期间,重复执行某些代码。
while(循环条件){ 要重复执行的代码(循环体) }
- 跟if语句很像,都要满足小括号里的条件为true才会进入 循环体 执行代码
- while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,若满足又执行大括号里的代码,然后再回到小括号判断条件,直到括号内条件不满足,即跳出
while 循环三要素:
循环的本质就是以某个变量为起始值,然后不断产生变化量,慢慢靠近终止条件的过程。
- 变量起始值
- 终止条件(没有终止条件,循环会一直执行,造成死循环)
- 变量变化量(用自增或者自减)
let i = 1 while(i <= 3){ document.write('我会循环三次 <br>') i++ }
2.4 循环退出
break
:退出整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用continue
:退出本次循环,一般用于排除或者跳过某一个选项的时候, 跳出继续执行下一轮循环
2.5 for 循环
好处: 把声明起始值、循环条件、变化值写到一起,让人一目了然,它是最常使用的循环形式.
for(变量起始值; 终止条件; 变量变化量){ //循环体 }
了解:
- while(true) 来构造“无限”循环,需要使用break退出循环。
- for( ; ; ) 也可以来构造“无限”循环,同样需要使用break退出循环。
for 循环和 while 循环的区别:
当如果明确了循环的次数的时候推荐使用for循环; 当不明确循环的次数的时候推荐使用while循环
循环嵌套:
一个循环里再套一个循环,一般用在for循环里
for(外部声明记录循环次数的变量; 循环条件; 变化值){ for(内部声明记录循环次数的变量; 循环条件; 变化值){ //循环体 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」