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是假,其余都是真
  • 对于字符串来说,只有空字符串''是假,其余都是真

image

1.5 逻辑运算符

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

image

1.6 运算符优先级

image

  • 一元运算符里面的逻辑非优先级很高
  • 逻辑与比逻辑或优先级高

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 等语句就不能被用于赋值

程序有三大流程控制语句:

  1. 顺序结构
  2. 分支结构
  3. 循环结构

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(数据){
case1:
代码1
break
case2:
代码2
break
default:
代码3
break
}
  • 找到跟小括号里数据全等的case值,并执行里面对应的代码
  • 若没有全等 === 的则执行default里的代码

2.3 while 循环语句

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

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

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

  1. 变量起始值
  2. 终止条件(没有终止条件,循环会一直执行,造成死循环)
  3. 变量变化量(用自增或者自减)
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(内部声明记录循环次数的变量; 循环条件; 变化值){
//循环体
}
}
posted @   Zohn-佐恩  阅读(37)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示