前言
运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号
1.算术运算符
概念:算术运算使用的符号,用于执行两个变量或值的算术运算
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 10 + 20 =30 |
- | 减 | 10 - 20 =-10 |
* | 乘 | 10 * 20 =200 |
/ | 除 | 10 / 20 =0.5 |
% | 取余数(取模) | 返回出发的余数 9 % 2 =1 |
1.1浮点数的精度问题
浮点数值的最高精度是17位小数,但在进行算数计算时其精确度远远不如整数
<script>
console.log(0.2 + 0.4); //0.6000000000000001
console.log(0.2 * 0.4); //0.08000000000000002
</script>
tips:
- 非必要,不要用浮点数进行计算,容易出现精度误差
1.2递增和递减运算符
递增和递减运算符分为前置和后置,例如(i++)是后置,(++i)是前置,具体区别参见下文
①前置递增运算符
使用口诀:先自加,后返回值
<script>
var index = 3;
console.log((index++) + 1); //4
console.log(index); //3
</script>
②后置递增运算符
使用口诀:先返回原值,后自加
<script>
var index = 3;
console.log((++index) + 1); //5
console.log(index); //3
</script>
③总结
- 前置递增和后置递增运算符可以简化代码的编写,让变量的值 + 1 比以前写法更简单
- 单独使用时,运行结果相同,与其他代码联用时,执行结果会不同
- 开发时,大多使用后置递增/减,并且代码独占一行
2.比较(关系)运算符
比较运算符是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true / false)作为比较运算的结果。
运算符名称 | 说明 | 举例 | 结果 |
---|---|---|---|
< | 小于号 | 2 < 3 | true |
> | 大于号 | 3 > 2 | false |
>= | 大于等于号(大于或者等于) | 1 >= 1 | true |
<= | 小于等于号(小于或者等于) | 5 <= 4 | false |
== | 判等号(会转型) | 15==15 | true |
!= | 不等号 | 18 != 18 | false |
=== | 全等,要求值和数据类型都一致 | 18 === ‘18’ | false |
3.逻辑运算符
逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值
逻辑运算符 | 说明 | 案例 | 结果 |
---|---|---|---|
&& | “逻辑与”,简称"与" and | true && false | false |
|| | “逻辑或”,简称"或" or | true || false | true |
! | “逻辑非”,简称"非" not | !true | false |
<script>
if (3 > 0 && -1 < 0) console.log('true'); //true
else console.log('false');
if (!3 || 3 < 0) console.log('true'); //true
else console.log('false');
</script>
4.短路运算
短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值
①逻辑与
- 如果第一个表达式的值为真,则返回表达式2
- 如果第一个表达式的值为假,则返回表达式1
<script>
var index = 0;
console.log(3 && (++index));
//3,执行语句1后直接输出结果3
console.log(index); //0,index的值没有变
</script>
②逻辑或
- 如果第一个表达式的值为真,则返回表达式1
- 如果第一个表达式的值为假,则返回表达式2
<script>
var index = 0;
console.log(3 || (++index)); //true
console.log(index); //0
</script>
5.赋值运算符
赋值运算符用来把数据赋值给变量的运算符
赋值运算符 | 说明 | 举例 |
---|---|---|
= | 直接赋值 | var index=18; |
+= ,-= | 加,减一个数后再赋值 | var index=3; index+=2;//5 |
*=,/=,%= | 成,除,取模后再赋值 | var age=1; age*=3; //3 |
<script>
var index = 10; console.log(index); //10
index += 5; console.log(index); //15
index *= 4; console.log(index); //60
</script>