JavaScript 运算符
运算符
运算符
也被称为操作符
,是用于实现赋值、比较和执行算数运算等动能的符号。
JavaScript 中常用的运算符有:
- 算数运算符
- 递增和递减运算符
- 比较运算符
- 逻辑运算符
- 赋值运算符
算数运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 1 + 2 = 3 |
- | 减 | 3 - 2 = 1 |
* | 乘 | 2 * 4 = 8 |
/ | 除 | 10 / 2 = 5 |
** | 幂运算 | 2 ** 4 = 16 |
% | 模运算(取余数) | 10 % 3 = 1 |
浮点数的进度问题 浮点数值的最高精度是 17 位小数,但在进行计算时其精确度远远不如整数
js
console.log(0.1 + 0.2) // 0.30000000000000004
console.log(0.07 * 100) // 7.000000000000001
赋值运算符
运算符名称 | 描述 | 实例 |
---|---|---|
= | 赋值 | let a = 10 |
??= | 空赋值 只有当变量的值为 null 或 undefined 时才会对变量进行赋值 | 3 - 2 = 1 |
+= | 加等于 | a += n 等价于 a = a + n |
-= | 减等于 | a -= n 等价于 a = a - n |
*= | 乘等于 | a *= n 等价于 a = a * n |
/= | 除等于 | a /= n 等价于 a = a / n |
%= | 模等于 | a %= n 等价于 a = a % n |
自增和自减
++ 自增运算符
- ++ 使用后会使得原来的变量立刻增加 1
- 自增分为前自增(++a)和后自增(a++)
- 无论是++a 还是 a++都会使原变量立刻增加 1
- 不同的是++a 和 a++所返回的值不同 a++ 是自增前的值 旧值 ++a 是自增后的值 新值
js
let a = 10
// let b = a++
// console.log("a++ =", b)
let b = ++a
// console.log("++a =", b)
// console.log(a)
let n = 5
// 5 + 7 + 7
let result = n++ + ++n + n
// console.log(result)
-- 自减运算符
- 使用后会使得原来的变量立刻减小 1
- 自减分为前自减(--a)和后自减(a--)
- 无论是--a 还是 a--都会使原变量立刻减少 1
- 不同的是--a 和 a--的值不同 --a 是新值 a-- 是旧值
js
a1 = 5
a2 = 5
console.log('--a1', --a1)
console.log('a2--', a2--)
console.log(a1, a2)
比较运行符
运算符名称 | 描述 | 案列 | 结果 |
---|---|---|---|
< | 小于号 | 1 < 2 | true |
> | 大于号 | 1 > 2 | false |
<= | 小于等于号 | 2 <= 2 | true |
>= | 大于等于号 | 3 >= 4 | false |
== | 判等号(判断两边值是否相等) | 18 == '18' | true |
!= | 不等号 | 'aaa' != 'abc' | true |
=== !== | 全等(要求值和数据类型都一致) | 18 === '18' | false |
逻辑运算符
逻辑与 &&
一假即假
可以对两个值进行与运算
当&&左右都为 true 时,则返回 true,否则返回 false
与运算是短路的与,如果第一个值为 false,则不看第二个值
与运算是找 false 的,如果找到 false 则直接返回,没有 false 才会返回 true
对于非布尔值进行与运算,它会转换为布尔值然后运算
但是最终会返回原值
- 如果第一个值为 false,则直接返回第一个值
- 如果第一个值为 true,则返回第二个值
js
console.log(true && false) // false
逻辑或 ||
一真即真
可以对两个值进行或运算
当||左右有 true 时,则返回 true,否则返回 false
或运算也是短路的或,如果第一个值为 true,则不看第二个值
或运算是找 true,如果找到 true 则直接返回,没有 true 才会返回 false
对于非布尔值或运算,它会转换为布尔值然后运算
但是最终会返回原值
- 如果第一个值为 true,则返回第一个
- 如果第一个值为 false,则返回第二个
js
console.log(true || false) // true
逻辑非 !
js
console.log(!false) // true
条件运算符
条件表达式 ? 表达式 1 : 表达式 2
执行顺序:
条件运算符在执行时,会先对条件表达式进行求值判断
- 如果结果为 true,则执行表达式 1
- 如果结果为 false,则执行表达式 2
运算符的优先级
JavaScript 各种运算符的优先级别(Operator Precedence)是不一样的。优先级高的运算符先执行,优先级低的运算符后执行。
js
4 + 5 * 6 // 34
圆括号(()
)可以用来提高运算的优先级,因为它的优先级是最高的,即圆括号中的表达式会第一个运算。使用运算符时,如果遇到拿不准的,可以直接通过()来改变优先级即可。
js
(4 + 5) * 6 // 54
a = (1 && 2) || 3 // 2