一、算数运算符
加+
减-
乘*
除/
取余%
-
浮点数的精度问题
浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数 -
表达式和返回值
表达式:是由数字、运算符、变量等组成的式子
表达式最终都会有一个结果,返回给开发者,称为返回值
二、递增和递减运算符
递增( ++ )
递减( -- )
++num
和num++
相当于num = num + 1
注意:递增和递减运算符必须和变量配合使用
- 前置递增运算符
++num
先自加,后赋值
var num = 10;
alert(++num + 10); // 21
- 后置递增运算符
num++
先赋值,后自加
var num = 10;
alert(num++ + 10); // 20 num = 11
开发时,大多使用后置递增/减,并且代码独占一行
三、比较运算符
运算符 | 运算符名称 |
---|---|
< | 小于号 |
> | 大于号 |
>= | 大于或等于 |
<= | 小于或等于 |
== | 判等号 只判断值(会转型) |
!= | 不等号 |
=== !== | 全等 要求值和数据类型都一致 |
判等号==
默认转换数据类型,会把字符串转为数字型
四、逻辑运算符
- 逻辑与 &&
两边都是 true 才返回 true,否则返回 false
console.log(3 > 5 && 3 > 2); // false
console.log(3 < 5 && 3 > 2); // ture
- 逻辑或 ||
两边都是 false 才返回 false,否则返回 true
console.log(3 > 5 && 3 > 2); // ture
console.log(3 > 5 && 3 < 2); // false
- 逻辑非 !
逻辑非!
也叫作取反符,用来取一个布尔值相反的值,如 true 的相反值是 false
console.log(!true); // false
- 短路运算(逻辑中断)
短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值
- 逻辑与
如果第一个表达式的值为真,则返回表达式2
如果第一个表达式的值为假,则返回表达式1
console.log( 123 && 456 ); // 456
console.log( 0 && 456 ); // 0
console.log( 0 && 456 && 789 ); // 0
console.log( 123 && 456 && 789 ); // 789
- 逻辑或
如果第一个表达式的值为真,则返回表达式1
如果第一个表达式的值为假,则返回表达式2
console.log( 123 || 456 ); // 123
console.log( 0 || 456 ); // 456
console.log( 123 || 456 || 789 ); // 123
var num = 0;
console.log(123 || num++); // 123
console.log(num); // 0
因为直接执行了123,后面的num++不执行
五、赋值运算符
赋值运算符 | 说明 |
---|---|
= | 直接赋值 |
+= 、-= | 加、减一个数,后再赋值 |
*= /= %= | 乘、除、取模,后再赋值 |
var age = 10;
age += 5; // 相当于 age = age + 5;
age -= 5; // 相当于 age = age - 5;
age *= 10; // 相当于 age = age * 10;
六、运算符优先级
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 小括号 | ( ) |
2 | 一元运算符 | ++ -- ! |
3 | 算数运算符 | 先* / % 后+ - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | 先&& 后|| |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
- 一元运算符里面的逻辑非优先级很高
- 逻辑与比逻辑或优先级高