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 | 逗号运算符 | , |