js-运算符
- 运算符:
运算符( operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。
- 表达式:
是由数字、 运算符、变量等以能求得数值的有意义排列方法所得的组合。
表达式最终都会有一个返回值
① 算术运算符
-
浮点数的精度问题
浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数
var result = 0.1 + 0.2; // 结果不是 0.3,而是:0.30000000000000004 console.log(0.07 * 100); // 结果不是 7, 而是:7.000000000000001
所以,浮点数在算术运算时会出现精度问题。
var num = 0.1 + 0.2; console.log(num == 0.3); // false
-
自增与自减运算符
前自增、减:先自增、减,在返回值。
后自增、减:先返回值,后自增、减。
var num = 10; var newNum = num++ + --num; console.log(newNum);//20
② 比较运算符
<
>
<=
>=
==
!=
===
!==
- 判等号的自动转型问题
console.log(18 == '18');//true
- 相等
==
/ 全等===
===
表示全等,他和==
基本一致,不过==
在判断两个值时会进行 自动的类型转换 ,而===不会。!== 和 !===
也是同理
③ 逻辑运算符
在进行逻辑操作时如果操作数不是布尔类型则会将其转换布尔类型在进行计算。
//逻辑与 &&
var res = 2>1 && 3>1; //true : true = true
var res = 2>1 && 3<1; //true : false = false
//逻辑或 ||
var res = 2>3 && 1<2; //false : true = true
var res = 2>3 && 1>2; //false : false = false
//逻辑非 ! , 取反符
var isOk = !true; // isok : false
-
短路运算(逻辑中断 )
-
短路与&&
- 如果第一个表达式的值为
true
,则返回表达式2 - 如果第一个表达式的值为
false
,则返回表达式1,且不会执行表达式2
console.log( 123 && 456 ); // 456 console.log( 0 && 456 ); // 0 console.log( 123 && 456&& 789 ); // 789
- 如果第一个表达式的值为
-
短路或||
- 如果第一个表达式的值为
true
,则返回表达式1,且不会执行表达式2 - 如果第一个表达式的值为
false
,则返回表达式2
console.log( 123 || 456 ); // 123 console.log( 0 || 456 ); // 456 console.log( 123 || 456 || 789 ); // 123
- 如果第一个表达式的值为
-
④ 赋值运算符
=
+=、-=
*=、/=、%=
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 | 逗号运算符 | , |