一、算术运算符
+ - * / %
- +:加号,作用是用数字运算和字符串连接
var a=1+2;打印 a 得 3,
var a=“a”+“b”;打印 a 得到 ab,
var a=1+“a”;打印 a 得到 1a,
var a=“a”+1+1;打印 a 得到 a11, - -:减号,求差
- *:求积
- /:求商
- %:取模(取余数)
- 开发中经常作为某个数字是否被整除
var a=5%2;打印 a 得到 1
var a=10%4;打印 a 得到 2
var a=5%1;打印 a 得到 0
var a=4%6;打印 a 得到 4
注意:
- (+加号):任何数字类型加字符串都等于字符串
- (/除号):
let a = 0/0; a = NaNNaN 属于数字类型,但是又得不出一个具体的数, 则得到 NaN - 计算顺序:先乘除后加减,有括号先算括号里面的
二、赋值运算符
- =
- +=
- -=
- *=
- /=
- %=
- **=
- ^=
三、一元运算符
- 自增 num++、++num
- 前置自增:++num
- 后置自增:num++
- 自减 num-- 、--num
- 前置自减:--num
- 后置自减:num--
前置自增和后置自增的区别:
前置自增: 先加1后运算---(先自增, 再运算)
后置自增: 先运算后加1---(先运算, 再自增)
经典案例:
<!--用来理解-->
let num2 = 10;
console.log(++num2); // 11
console.log(num2++); // 11
console.log(num2); // 12
<!--面试题-->
let i = 1;
console.log(i++ + ++i +i) // 7
使用场景:
经常用于计数来使用,用来计算多少次。
开发中,我们一般都是单独使用的,后置++ 使用更多
四、比较运算符
- >: 左边是否大于右边
- <: 左边是否小于右边
- >=: 左边是否大于或等于右边
- <=: 左边是否小于或等于右边
- ==: 左右两边是否相等,将两边的数据进行转换为数值
- ===: 左右两边是否类型和值都相等
- !=: 不等于
- !==: 完全不等于
- 比较结果为boolean类型,即只会得到true或false
注意点:
- 字符串比较,是比较的字符对应的ASCII码
- NaN不等于任何值,包括它本身
- 尽量不要比较小数,因为小数有精度问题
- 不同类型之间比较会发生隐式转换
// 字符串的比较是比较 ASCII码 的值
console.log('a字符串 > b字符串', 'a' > 'b'); // false
// NaN 的比较: NaN不等于任何值, 包括他本身
console.log('NaN > NaN', NaN > NaN); // false
// 尽量不要比较小数,因为小数有精度问题
console.log('0.1 < 0.2', 0.1 < 0.2); // false
五、逻辑运算符
- &&:与
如果有两个值进行运算,先看第一个表达式的值转化为布尔值是否为真,如果是真,他会把第二个表达式的值返回,如果第一个表达式的值为假。他会直接返回第一个表达式的值,不看后面的;如果有三个或以上多个值,会一个一个判断,如果都为真,则返回最后一个的值,如果遇到假的,则会直接返回这个表达式的值,后边的就不看了(遇假就停)
- ||:或
如果||有多个值,他会一个一个判断,如果这些值都为假,则返回最后一个值,如果判断到哪个表达式的值是真的,他就会直接返回这个表达式的值,后边就不看了(遇真就停)。
- !:非
!的作用就是把一个值转换为布尔值再取反
必记: undefined、null、NaN、0、“”、false 这些值转换为布尔值是 false(假),其他的值 转化为布尔值都是 true(真)
六、运算符优先级
| 优先级 | 运算符 | 顺序 | |
|---|---|---|---|
| 1 | 小括号 | () | |
| 2 | 一元运算符 | ++ -- ! | |
| 3 | 算术运算符 | 先* / % 后 + - | |
| 4 | 比较运算符 | > >= < <= | |
| 5 | 相等运算符 | == != === !== | |
| 6 | 逻辑运算符 | 先 && 后 | |
| 7 | 赋值运算符 | = | |
| 8 | 逗号运算符 | , |
总结: 口诀(计算比较判断逻辑)