表达式种类
算数、关系、逻辑、赋值、综合
1. 算数运算
1.1 % 取余运算
取余运算也叫做 “求模运算”,用百分号 “%”表示。
- a % b 表示求a除以b的余数,不关心整数部分,只关心余数
11 % 4; // 3 余数是3
4 % 2; // 0 整除,余数是0
3 % 9; // 3 商0,余数是3
1.2 隐式类型转换
假如参与算数运算的某操作数不是数字型,那么JavaScript会自动调用Number()函数,先转换再计算
true + 1; // 2 Number(true) + 2
1.3 toFixed()方法保留指定的小数位数
在JavaScript中,有些小数的数学运算不是很精准
0.1 + 0.2 // 0.30000000000000004
使用toFixed()方法保留小数位数
(0.1 + 0.2).toFixed(1); // 0.3
1.4 幂和开根号
- 幂运算:Math.pow()
Math.pow(2, 3) // 8
Math.pow(3, 2) // 9
- 开根号
Math.sqrt(81) // 9
Math.sqrt(-81) // NaN
1.5 向上、向下取整
- Math.ceil() 向上取整;
- Math.floor() 向下取整
Math.ceil(3.4) // 4
Math.ceil(-3.4) // -3
Math.floor(3.4) // 3
Math.floor(-3.4) // -4
2. 关系运算
2.1 关系运算符
等于 ==
不等于 !=
全等于 ===
不全等于 !==
2.2 等于 和 全等于 的区别
- 等于在检查两个操作数是否相等时,会尝试强制类型转换;
- 全等于则会比较类型
true == 1; // true
true === 1; // false
2.3 相等的特殊值
undefined == null // true
undefined === null // false
2.4 NaN不自等
NaN == NaN // false
NaN === NaN // false
2.5 判断变量是否为NaN
2.5.1 isNaN()函数
isNaN(NaN) // true
isNaN(5) // false
某些不能强制转换为数值的非数值转换为数值的时候,也会得到NaN
isNaN('1加1') // true
isNaN(undefined) // true
isNaN(null) //false
3. 逻辑运算
3.1 逻辑运算符
! 非
&& 与
|| 或
3.2 非运算
- 也可以称为 “置反运算”
- ! 是一个 “单目运算符”,只需要一个操作数
- 结果一定是布尔值
3.2.1 使用两个 !来判断布尔值
!! true // true
!! 0 // false
!! '' // false
!! '123' // true
3.3 与运算
&& 表示 “并且”,口诀:都真才真
true && true // true
true && false // false
false && false // false
3.3.1 短语与
a && b运算中: a真,表达式值为b; a假,表达式值为a
3.4 或运算
|| 表示 “或者”,口诀:有真就真
true || true // true
true || false // true
false || false // false
3.4.1 短语或
a && b运算中: a真,表达式值为a; a假,表达式值为b
3.5 逻辑运算优先级
非-->与-->或
4. 综合运算顺序
非运算-->数学运算-->关系运算-->逻辑运算