1. 赋值运算符
赋值运算符:对变量进行赋值的运算符
已经学过的赋值运算符:= 将等号右边的值赋予给左边,要求左边必须是一个容器
其他赋值运算符:
+=
-=
*=
/=
%=
我们以 += 赋值运算符为例子
以前我们让一个变量加1如何做的?
let num = 1 num = num + 1 console.log(num)
现在我们有一个简单的写法
let num = 1 num += 1 console.log(num)
2. 一元运算符
众多的JavaScript的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符
二元运算符:
例:
let num = 10 + 20
一元运算符
例:正负号
自增:
符号:++
作用:让变量的值 +1
自减:
符号:--
作用:让变量的值 -1
使用场景:经常用于计数来使用。 比如进行10次操作,用它来计算进行了多少次了
自增运算符的用法:
前置自增:
let num = 1 ++num // 让num的值加1变2
每执行1次,当前变量数值加1
其作用相当于num+=1
先自加再使用(++在前 先加)
let i = 1 console.log(++i) // 2
后置自增:
let num = 1 num++ // 让num的值加1变2
每执行1次,当前变量数值加1
其作用相当于num +=1
先使用后自加(++在后 后加)
let i = 1 console.log(i++) // 1 console.log(i) // 2
3. 比较运算符
> | 左边是否大于右边 |
< | 左边是否小于右边 |
>= | 左边是否大于或等于右边 |
<= | 左边是否小于或等于右边 |
== | 左右两边值是否相等 |
=== | 左右两边是否类型和值都相等 |
!== | 左右两边是否不全等 |
比较结果为 boolean 类型,即只会得到 true 或 false
对比:
= 单等是赋值
== 是判断
=== 是全等
开发中判断是否相等,强烈推荐使用 ===
console.log(3 > 5) // false console.log(3 >= 3) // true console.log(2 == 2) // true // 比较运算符有隐式转换 把 '2' 转换为 2 双等号 只判断值 console.log(2 == '2') // true // === 全等判断 值 和 数据类型 都一样才行 console.log(2 === '2') // false console.log(NaN === NaN)// false NaN 不等于任何,包括它自己 console.log(2 !== '2') // true console.log(2 != '2') // false console.log('a' < 'b') // true console.log('aa' < 'ab') // true console.log('aa' < 'aac') // true
字符串比较,是比较的字符对应的ASCII码
从左往右依次比较
如果第一位一样再比较第二位,以此类推
比较的少,了解即可
NaN不等于任何值,包括它本身
涉及到 "NaN" 都是 false
尽量不要比较小数,因为小数有精度问题
不同类型之间比较会发生隐式转换
最终把数据隐式转换转成 number 类型再比较
所以开发中,如果进行准确的比较我们更喜欢 === 或者 !==
4. 逻辑运算符
提问: 如果我想判断一个变量 num 是否大于5且小于10,怎么办?
错误写法:5<num<10
使用场景:逻辑运算符用来解决多重条件判断
正确写法:num>5 && num<10
5. 运算符优先级
优先级 | 运算符 | 顺序 |
1 | 小括号 | () |
2 | 一元运算符 | ++ -- ! |
3 | 算数运算符 | 先 * / 后 + - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | 先&& 后|| |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
一元运算符里面的逻辑非优先级很高
逻辑与比逻辑或优先级高
6. 逻辑中断
1.逻辑运算符里的短路
短路:只存在于 && 和 || 中,当满足一定条件会让右边代码不执行
原因:通过左边能得到整个式子的结果,因此没必要再判断右边
运算结果:无论 && 还是 ||,运算结果都是最后被执行的表达式值,一般用在变量赋值