1. 算术运算符
算术运算符用于表达式计算。
运算符 | 描述 | 案例 | 运算结果 |
+ | 加法 | a = 5 + 2 | a = 7 |
- | 减法 | a = 5 - 1 | a = 3 |
* | 乘法 | a = 5 * 2 | a = 10 |
/ | 除法 | a = 5 / 2 | a = 2.5 |
** | 幂运算 | a = 5 ** 2 | a = 25 |
% | 取模(求余数) | a = 5 % 2 | a = 1 |
++ | 自增 | a = 5++ a = ++5 | a = 6 a = 5 |
-- | 自减 | a = 5-- a = --5 | a = 4 a = 5 |
注意:算术运算符,除了字符串的加法,其它运算的操作是非数值时,都会转换为数值然后再运算。
2. 赋值运算符
赋值运算符用来将一个赋值给一个变量。
a = 2
运算符 | 案例 | 等同于 | 运算结果 |
= | a = 2 | a = 2 | |
+= | a += 2 | a = a + 2 | a = 7 |
-= | a -= 2 | a = a - 2 | a = 3 |
/= | a /= 2 | a = a / 2 | a = 2.5 |
*= | a *= 2 | a = a * 2 | a = 10 |
%= | a %= 2 | a = a % 2 | a =1 |
**= | a **= 2 | a = a ** 2 | a = 25 |
3. 一元的±
+ 正号:不会改变数值的符号,负号:可以对数值进行符号位取反。
注意:当我们对非数值类型进行正负运算时,会先将其转换为数值然后再运算。
let b = '123'
b = +b
console.log(typeof b, b)
4. 逻辑运算符
逻辑运算符用于测定变量或值之间的逻辑。
给定 x=6 以及 y=3,下表解释了逻辑运算符:
运算符 | 描述 | 例子 |
---|---|---|
&& | and | (x < 10 && y > 1) 为 true |
|| | or | (x==5 || y==5) 为 false |
! | not | !(x==y) 为 true |
! 逻辑非:
- ! 可以用来对一个值进行非运算
- 它可以对一个布尔值进行取反操作
- true ——> false
- false ——> true
- 如果对一个非布尔值进行取反,它会先将其转换为布尔值然后再取反,可以利用这个特点将其它类型转换为布尔值
&& 逻辑与:
- 可以对两个值进行与运算
- 当 && 左右都为 true 时,则返回 true,否则返回 false
- 与运算是短路的与,如果第一个值为 false,则不看第二个值
- 与运算是找 false 的,如果找到 false 则直接返回,没有 false 才会返回 true
- 对于非布尔值进行与运算,它会转换为布尔值然后运算,但是最终会返回原值
- 如果第一个值为 false,则直接返回第一个值
- 如果第一个为 true,则返回第二个值
|| 逻辑或:
- 可以对两个值进行或运算
- 当 || 左右有 true 时,则返回 true,否则返回 false
- 或运算是短路的或,如果第一个值为 true,则不看第二个值
- 与运算是找 true 的,如果找到 true 则直接返回,没有 true 才会返回 false
- 对于非布尔值进行或运算,它会转换为布尔值然后运算,但是最终会返回原值
- 如果第一个值为 true,则返回第一个
- 如果第一个为 false,则返回第二个
5. 关系运算符
关系运算符用来检查两个值之间的关系是否成立。
a = 5
运算符 | 描述 | 比较 | 返回值 |
---|---|---|---|
> | 大于 | a > 8 | false |
< | 小于 | a < 8 | true |
>= | 大于或等于 | a >= 8 | false |
<= | 小于或等于 | a <= 8 | true |
注意:当对非数值进行关系运算时,它会先将前转换为数值然后再比较当关系运算符的两端是两个字符串,它不会将字符串转换为数值,而是逐位的比较字符的 Unicode 编码,利用这个特点可以对字符串按照字母排序。
注意比较两个字符串格式的数字时一定要进行类型转换。
6. 相等运算符
a = 5
== 相等运算
- 当使用==来比较两个值时,如果值的类型不同,则会自动进行类型转换,将其转换为相同的类型,然后在比较
=== 全等运算
- 用来判断两个值是否全等,它和相等类似,不同的是它不会做自动的类型转换,如果两个值的类型不同,直接返回false
!= 不相等运算
- 不相等用来判断两个值是否不相等,如果不相等返回true,否则返回false,不相等也会对变量进行自动的类型转换,如果转换后相等它也会返回false
!== 不全等运算
- 用来判断两个值是否不全等,它和不等类似,不同的是它不会做自动的类型转换,如果两个值的类型不同,直接返回true
7. 条件运算符
条件表达式:?表达式1,表达式2
执行顺序:
- 条件运算符在执行时,会先对条件表达式进行求值判断,
- 如果结果为true,则执行表达式1
- 如果结果为false,则执行表达式2
8. 运算符优先级
和数学一样,JS 中的运算符也有优先级,比如先乘除和加减。
可以通过优先级的表格来查询运算符的优先级
- https://developer.mozilla.org/enUS/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
注意:在表格中位置月靠上的优先级越高,优先级越高越先执行,优先级一样自左向右执行,优先级我们不需要记忆,甚至表格都不需要看,因为 () 拥有最高的优先级,使用运算符时,如果遇到拿不准的,可以直接通过 () 来改变优先级即可。