JS基础-运算符
1. 运算符
运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号
1.1 运算符的分类
- 算数运算符
- 递增和递减运算符
- 比较运算符
- 逻辑运算符
- 赋值运算符
1.2 算数运算符
- 概念:算术运算使用的符号,用于执行两个变量或值的算术运算
运算符 | 描述 | 实例 |
---|---|---|
+ | 加法 | 1 + 2 = 3 |
- | 减法 | 3 - 2 = 1 |
* | 乘法 | 2 * 2 = 4 |
/ | 除法 | 2 / 1 = 1 |
% | 取余数(取模) | 5 % 2 = 1 |
- 浮点数的精度问题
浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数
var result = 0.1 + 0.2; // 结果不是 0.3,而是:0.30000000000000004
console.log(0.07 * 100); // 结果不是 7,而是:7.000000000000001
注意:不要直接判断两个浮点数是否相等 !
- 表达式和返回值
表达式:由数字、运算符、变量等组成的式子
返回值:表达式最终都会有一个结果,返回给开发者
1.3 递增和递减运算符
概述:将数字变量自加 / 减一,递增和递减运算符既可以放在变量前面,也可以放在变量后面
注意:递增和递减运算符必须和变量配合使用!
-
前置递增运算符:
口诀:先自加,后返回值(先己后人)
var num = 6; alert(++num); // 7
-
后置递增运算符
口诀:先返回原值,后自加(先人后己)
var num = 6; alert(num++); // 6
1.4 比较运算符
概念:两个数据进行比较时所使用的运算符,比较运算后返回结果为布尔值
运算符 | 描述 | 实例 | 结果 |
---|---|---|---|
< | 大于 | 1 < 2 | true |
> | 小于 | 1 > 2 | false |
>= | 大于等于 | 2 >= 2 | true |
<= | 小于等于 | 3 <= 2 | false |
!= | 不等于 | 3 != 3 | false |
== | 等号(有隐式转换) | 3 == '3' | true |
=== | 数据类型与值全等 | 3 === '3' | false |
!== | 数据类型与值全不等 | 3 === '3' | true |
1.5 逻辑运算符
概念:用来进行布尔值运算的运算符,返回结果为布尔值,常用于多个条件的判断
运算符 | 英文 | 描述 | 判断 | 逻辑中断 |
---|---|---|---|---|
&& | and | 与 | 一假则假 | 真取尾,假取首 |
|| | or | 或 | 一真则真 | 真取首,假取尾 |
not | not | 非 | 取反 |
注意:取首后逻辑中断将不再向后执行!
1.6 赋值运算符
概念:用来把数据赋值给变量的运算符
规律:把等号拿到运算符后,去掉一个重复的值
运算符 | 描述 | 实例 |
---|---|---|
= | 简单赋值运算符 | c = a + b |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取余赋值运算符 | c %= a 等效于 c = c % a |
**= | 次方赋值运算符 | c **= a 等效于 c = c 的 a 次方 |
1.7 运算符优先级
优先级 | 运算符 | 符号顺序 |
---|---|---|
1 | 小括号 | () |
2 | 一元运算符 | ++ -- ! |
3 | 算数运算符 | 先 * / 后 + - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | 先 && 后 || |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
注意:一元运算符里面的逻辑非优先级很高!
2. 流程控制
控制代码按照一定结构顺序来执行
2.1 单分支
条件成立执行代码,否则什么也不做
if (条件表达式) {
// 条件成立执行的代码语句
}
2.2 双分支
条件成立则执行 if
里面代码,否则执行 else
里面的代码
if (条件表达式) {
// [如果] 条件成立执行的代码
} else {
// [否则] 执行的代码
}
2.3 多分支
适合于检查多重条件
if (条件表达式1) {
语句1;
} else if (条件表达式2) {
语句2;
} else if (条件表达式3) {
语句3;
....
} else {
// 上述条件都不成立执行此处代码
}
2.4 三元表达式
判断条件 ? 真输出 : 假输出;
简单理解: 类似于 双分支的简写
2.5 switch 多分支
基于不同的条件来执行不同的代码,主要针对匹配固定的值时
switch (表达式) {
case 值1:
// 表达式 等于 value1 时要执行的代码
break;
case 值2:
// 表达式 等于 value2 时要执行的代码
break;
default:
// 表达式 不等于任何一个 value 时要执行的代码
}
- switch 后面括号内可以是表达式或值, 通常是一个变量
- case 后设置固定的选项表达式或值,后面跟一个冒号
- switch 表达式的值会直接与 case 的值做比较
- 如果存在匹配全等(===) ,则与该 case 关联的代码块会被执行,并在遇到 break 时停止,整个 switch 语句代码执行结束
- 如果所有的 case 的值都和表达式的值不匹配,则执行 default 里的代码
注意: 执行case 里面的语句时,如果没有break,则继续执行下一个case里面的语句,直到遇到 break 为止
switch 语句和 if else if 语句的区别
- 一般情况下,它们两个语句可以相互替换
- switch 语句通常处理比较确定的值, 而 if else 语句常用于范围判断 (大于、等于某个范围)
- switch 语句进行条件判断后直接执行到程序的条件语句,效率更高;而if…else 语句有几种条件,就得判断多少次
- 当分支比较少时,if… else语句的执行效率比 switch语句高
- 当分支比较多时,switch语句的执行效率较高,而且结构更清晰
© 版权声明
文章版权归作者所有,未经允许请勿转载。
文章版权归作者所有,未经允许请勿转载。
THE END