1.算数运算符
+ 加
- 减
* 乘
/ 除
% 取余
** 幂运算 2 ** 4 = ,2 ** .5 = 根号2
2.赋值运算符
= 等于
??= 空赋值,只有在变量的值为null或undefined时才会给变量赋值
+= a += 1相当于a = a + 1
-= a -= 1相当于a = a - 1
*= a *= 1相当于a = a * 1
/= a /= 1相当于a = a / 1
%= a %= 1相当于a = a % 1
**= a **= 1相当于a = a ** 1
let a = 7 a ??= 5 console.log(a); //7 let b = null b ??= 100 console.log(b); //100
3. 自增自减运算符
++a与a++
使用后会使原变量的值立刻+1
它们不同的是++a的值为+1后的值,a++的值为原来变量的值
--a与a--
使用后会使原变量的值立刻-1
它们不同的是--a的值为-1后的值,a--的值为原来变量的值
let a = 2 let b = a++ console.log(a,b); //3 2 //++a的值为3 let n = 5 let result = n++ + ++n + n console.log(result); //5+(6+1)+7=19
4.逻辑运算符
!
逻辑非:对一个布尔值进行取反操作,如果该值不是布尔值则自动转为布尔值后再取反,!!用于其他类型转布尔值。
&&
逻辑与:当左右都为true时才返回true,只要有一个为false,则返回false。当左边为false时直接返回false对应的值,不执行右边的语句;当左边为true时,直接返回右边的值。(找false,找到就返回,找不到就返回右边)
||
逻辑或:当左右都为false时才返回false,只要有一个true,就返回true。当左边为true时,直接返回true对应的值,不执行右边,当左边为false时,直接返回右边的值。(找true,找到就返回,找不到就返回右边)
console.log(1 && 2); //2 console.log(1 && 0); //0 console.log(0 && 1); //0 console.log(NaN && null); //NaN console.log(1 || 2); //1 console.log(0 || 2); //2 console.log(1 || 0); //1 console.log(NaN || undefined); //undefined
5.关系运算符
>,>=,<,<=
- 用于比较左右两边的值是否成立,成立则返回true,否则返回false
- 当对非数值进行关系运算时,会先将左右两边转换为数值再进行比较。
- 当左右两边都是字符串时,它不会转换为数字,而会逐位的比较Unicode编码。
console.log("a" < "b");//true console.log("abc" > "b");//false console.log(1 > false);//true console.log(true > 0);//true
6.相等运算符
==,=== ,!=,!==
- 相等返回true,不相等返回false
- ==会在判断前进行类型转换,通常转换为number类型,转换后再进行判断。
- null和undefined用==判断时返回true,用===判断时返回false。
- 只要有NaN进行判断,一定返回false。
- ===不会进行类型判断,类型不一样直接返回false
- !=,!==和相等是相反的
console.log(1 == true); //true console.log(1 === true); //false console.log(null == undefined); //true console.log(null === undefined);//false console.log(NaN == "666");//false console.log(null == NaN);//false
7.条件运算符
条件表达式?表达式1:表达式2
当条件表达式为true时返回表达式1,为false时返回表达式2。
let a = 3,b = 7 let result = a > 5 ? a : b console.log(result);//7