赋值运算符
介绍:对变量进行赋值的运算符
语法:+= 、-= 、*= 、 /= 、%= 、 =
| ==let num = 1== | 等价于 | 结果 |
|---|---|---|
| num += 2 | num = num + 2 | num = 3 |
| num -= 2 | num = num - 2 | num = -1 |
| num *= 2 | num = num * 2 | num = 2 |
| num /= 2 | num = num / 2 | num = 0.5 |
| num %= 2 | num = num % 2 | num = 1 |
| num = 2 | 赋值 | num = 2 |
一元运算符
语法:变量++、 变量-- 、!
使用场景:经常用于计数来使用
let num = 1
num++
console.log(num) // 2
自增和自减:
前置自增:先自增后运算
后置自增:先运算后自增
注意:前置自增和后置自增单独使用没有区别
二元运算符
介绍:由两个元素 形成第三个元素 的一种规则运算
let num = 20 + 30
三元运算符
语法:条件 ? 满足条件执行的代码 :不满足条件执行的代码
使用场景:数字补零
let i = 5
i = i < 10 ? '0' + i : i // 05
i 的值如果小于10,那么就在 i 的前面补零
比较运算符
使用场景:比较两个数据大小、是否相等
| 运算符 | 说明 |
|---|---|
| > | 左边是否大于右边 |
| < | 左边是否小于右边 |
| >= | 左边是否大于或等于右边 |
| <= | 左边是否小于或等于右边 |
| == | 左右两边值是否相等 |
| === | 左右两边是否类型和值都相等 |
| !== | 左右两边是否不全等 |
注意:
-
NaN不等于任何值,包括它本身
-
涉及到"NaN“ 都是false
-
尽量不要比较小数,因为小数有精度问题
-
比较结果为boolean类型,即只会得到 true 或 false
-
不同类型之间比较会发生隐式转换,会把其他类型的转换为number型
逻辑运算符
| 符号 | 名称 | 日常读法 | 特点 | 口诀 |
|---|---|---|---|---|
| && | 逻辑与 | 并且 | 符号两边都为true,结果才为true | 一假则假 |
| || | 逻辑或 | 或者 | 符号好两边有一个为true就为true | 一真则真 |
| ! | 逻辑非 | 取反 | true变false,false变true | 真变假,假变真 |
console.log(true && true) // true
console.log(false && true) // false
console.log(3<5 && 3>2) // true
console.log(3<5 && 3<2) // false
-----------------------------------
console.log(true || true) //true
console.log(false || true) //true
console.log(false || false) //false
----------------------------------
console.log(!true) //false
console.lgo(!false) //true
逻辑中断
介绍:只存在于 && 和 || 中,当满足一定条件会让右边代码不执行(短路)
使用场景:变量赋值
| 符号 | 短路条件 |
|---|---|
| && | 左边为false短路 |
| || | 左边为true短路 |
展开运算符
介绍:展开运算符可以展开数组
使用场景:求最大值,合并数组
语法:...arr
const arr = [0,1,2]
console.log(...arr) //0 1 2
注意:不会修改原数组
运算符优先级
| 优先级 | 运算符 | 顺序 |
|---|---|---|
| 1 | 小括号 | () |
| 2 | 一元运算符 | ++ -- ! |
| 3 | 算术运算符 | 先 / % 后 + -* |
| 4 | 关系运算符 | > >= < <= |
| 5 | 相等运算符 | == != === 不全等 |
| 6 | 逻辑运算符 | 先&& 后 || |
| 7 | 赋值运算符 | = |
| 8 | 逗号运算符 | , |
注意:
-
逻辑非优先级很高
-
逻辑与 比 逻辑或 优先级高