JavaScript—— 运算符总结(超全)
1.小括号运算符
()在我们js执行代码的过程中,一行代码内,优先执行小括号里面的内容;
2. 自增和自减运算符(一元运算符)
-
++自增:让当前变量+1的意思let num = 2 num ++ // 3 ++num // 2 -
--自减:让当前变量-1的意思let num = 1 num -- // 0 --num // -1注意:自增自减,运算符可以放前面也可以放后面,但是在不同的场景下其含义和结果会有偏差;
不参与运算时,结果一样;
参与运算前缀和后缀就有区别:
- 前缀:先自增(自减)变量,再用自增(自减)后的变量参与运算
- 后缀:先用变量原值参与运算,再自增(自减)变量
3.算术运算符
跟我们数学运算规则一致,()小括号里面的先计算,然后到* % 后+ -
-
+相加、字符串拼接-
如果两边都是number类型,就是进行相加
-
如果两边有一个是字符串,那么拼接产生一个新的字符串
1+1 // 21+ '1' // '11'
-
-
-相减 ,存在类型隐式转换 -
*相乘,存在类型隐式转换 -
/相除,存在类型隐式转换 -
%取余数,存在类型隐式转换,正负只与左边数字有关1 - '1' // 0 1 * '2' // 2 4 / '2' // 2 4 % '2' // 0以上优先级:先乘除后加减,有括号的先算括号里面的,同级就从左往右依次运算
4. 比较运算符
返回的结果都是布尔值Boolean,返回true或者false
关系运算符
-
>:判断左边是否大于右边 -
<:判断左边是否小于右边 -
>=:判断左边是否大于或等于右边 -
<=:判断左边是否小于或等于右边相当运算符
-
==:判断左右两边是否相等,只判断值相等,不判断类型 -
===:判断左右两边是否全等,既要值相等,类型也要相等 -
!=:判断左右两边是否不等
注意:== 与 ===的差别,2个等不判断类型,且会产生隐式转换,3个等需要判断类型,更加严谨,建议使用3个等
5. 逻辑运算符、操作符
&&:逻辑与 ,两边true为true,其一false为false;||:逻辑或,两边false为false,其中一边条件满足就true;!:逻辑非,true变false,false变true,存在类型转换(0、空字符串、NaN、undefined、null转成false,其他都是true);?.:可选链逻辑操作符,引用为空 (null或者undefined) 的情况下不会引起错误,该表达式短路返回值是undefined,这样不会报错,也不会继续执行,A?.num与A&&A.num一样用法??:空值合并运算符,是一个逻辑操作符,当左侧的操作数为null或者undefined时,返回其右侧操作数,否则返回左侧操作数。相当于简写的3元表达式;
6. 赋值运算符
给变量赋值的方式,直接赋值,简写赋值。
=:右边的值赋值给左边变量+=:在自己值的基础上再+一个值-=:在自己值的基础上再-一个值*=:在自己值的基础上再*一个值/=:在自己值的基础上再/一个值%=:在自己值的基础上再%一个值
7.逗号运算符(二元运算符)
表达式1,表达式2,表达式3,…表达式n
具体会与其他运算符结合使用,其实就是从左到右依次执行运算
// 例1:
var a=1 , b=2 , c=3相当于:
var a=1
var b=2
var c=3// 例2:
a = (b = 1,c = 2); //连续执行和赋值
console.log(a); //返回2
console.log(b); //返回1
console.log(c); //返回2
相当于:
a = b = 1
a = c = 2 // 覆盖了前面的赋值// 例3:
var i,j=6,k;
for(i=0; i<10; i++,j++) {k = i + j;
}// 例4:
console.log(1,2,3,4,5)
以上运算符优先级
| 优先级 | 运算符 | 顺序 |
|---|---|---|
| 1 | 小括号 | () |
| 2 | 一元运算符 | ++ – ! |
| 3 | 算数运算符 | 先* % 后+ - |
| 4 | 关系运算符 | > >= < <= |
| 5 | 相等运算符 | === == != !== |
| 6 | 逻辑运算符 | 先&& 后 || |
| 7 | 赋值运算符 | = |
| 8 | 逗号运算符 | , |