运算符
算术运算算符
自增和自减运算符
比较算符
逻辑运算符
赋值运算符
运算符优先级
1.运算符
运算符(operator)也被称为——是用于实现赋值、比较和执行算数运算等功能的符号。
JavaScript中常用的运算符有:
•算数运算符
•递增和递减运算符
•比较运算符
•逻辑运算符
•赋值运算符
2.算术算符
2.1 算术运算符概述
概念:算术运算使用的符号,用于执行两个变量或值的算术运算。
运算符 | 描述 | 实例 |
+ | 加 | 10 + 20 = 30 |
- | 减 | 10-20 = ^10 |
* | 乘 | 10*20 = 200 |
/ | 除 | 10/20 = 0.5 |
% | 取余数(取模) | 返回除法的余数9%2 = 1 |
2.2 浮点数的精度问题
浮点数值的最高精度是17位小数,但在进行算术计算时其精确度远远不如整数。
var result = 0.1 + 0.2; // 结果不是 0.3,而是:0.30000000000000004
console.log(0.07 * 100) ;// 结果不是 7, 而是 : 7.000000000000001
所以:不要直接判断两个浮点数是否相等
2.4 表达式和返回值
表达式:是由数字、运算符、变量等以能求得数值的有意义排列方法所得的组合
简单理解:是由数字、运算符、变量等组成的式子
表达式最终都会有一个结果,返回给我们,我们成为返回值
3.自增和自减运算符 (也属于算术运算符)
一元运算符
运算符 | 描述 | 实例 |
++ | 自增 | x=++y |
x=y++ | ||
-- | 自减 | x=--y |
x=y-- |
3.1自增和自减运算符概述
如果需要反复给数字变量添加或减去],可以使用自增或自减运算符来完成。
在JavaScript中,自增(+ + )和自减(--)在变量前面时,我们可以称为前置运算符
在变量后面时,我们可以称为后置运算符。
注意:递增和递减运算符必须和变量配合使用。
3.2自增运算符
1.前置自增运算符
++ num前置递增,就是自加1 ,类似于num = num + 1 ,但是++ num写起来更简单。
使用口诀:先自加,再赋值
var num = 10; alert(++num + 10); / 21
2.后置自增运算符
num ++后置递增,就是自加1 ,类似于num = num + 1 ,但是num ++写起来更简单。
使用口诀:先赋值(返回原值),后自加
var num = 10; alert (10 + num++) ; // 20
3.3前置递增和后置递增小结
•前置递增和后置递增运算符可以简化代码的编写,让变量的值+1比以前写法更简单
•单独使用时,运行结果相同
•与其他代码联用时,执行结果会不同
•后置:先原值运算,后自加(先人后己)
•前置:先自加,后运算(先已后人)
•开发时,大多使用后置递增/减,并且代码独占一行,例如:num ++;或者num--;
4.比较运算符
4.1比较运算符概述
概念:比较运算符(关系运算符)是比较两个值,比较运算后,会返回布尔值
(true / false )作为比较运算的结果。
运算符名称 | 说明 | 案例 | 结果 |
小于号 | 1 < 2 | true | |
> | 大于号 | 1 > 2 | false |
> = | 大于等于号(大于或者等于) | 2>=2 | true |
< = | 小于等于号(小于或者等于) | 3 | false |
== | 双等号(会转型) | 37 == 37 | true |
!= | 不等号 | 37 != 37 | false |
=== | 全等要求值和数据类型都一致 | 37 === '37' | false |
4.2 小结
console.log (18 == '18')
console.log (18 ==='18')
5.逻辑运算符
5.1逻辑运算符概述
概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。后面开发中经常用于多个条件的判断
运算符名称 | 说明 | 案例 | 结果 |
&& | and | (x < 10 && y > 1) 为 true | true |
|| | or | (x==5 || y==5) 为 false | false |
! | not | !(x==y) 为 true | true |
5.2逻辑与&&
两边都是true才返回true ,否则返回false
var res = 2 > 1 && 3 > 1; | var res = 2 > 1 && 3 < 1; | |||
true | true true | false | true false | |
两边都为true | 其中一个为false | |||
var res = 2 < 1 && 3 > 1; | var res = 2 < 1 && 3 > | |||
false | false true | false false | ||
5.3逻辑或||
两边都为false才返回false ,否则都为true
var res = 2 > 3 | | 1 < 2;
var res = 2 > 3 | | 1 > 2;
false false
false
5.4逻辑非!
逻辑非(!)也叫作取反符,用来取一个布尔值相反的值,如true的相反值是false
var isOk = !true;
console.log(isOk); // false
5.5 短路运算(逻辑中断)
短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值;
1.逻辑与
•语法:表达式1 &&表达式2
•如果第一个表达式的值为真,则返回表达式2
•如果第一个表达式的值为假,则返回表达式1
2. 逻辑或
•语法:表达式1 ||表达式2
•如果第一个表达式的值为真,则返回表达式1
•如果第一个表达式的值为假,则返回表达式2
总结:如果运算符两边和操作数,有一个操作数不是布尔值的情况,返回的不一定是布尔值,可能是原值
6.赋值运算符
运算符名称 | 例子 | 等同于 | 结果 |
= | x=y | x=5 | |
+= | x+=y | x=x+y | x=15 |
-= | x-=y | x=x-y | x=5 |
*= | x*=y | x=x*y | x=50 |
/= | x/=y | x=x/y | x=2 |
%= | x%=y | x=x%y | x=0 |
7.条件运算符(三元或三目运算符)
条件表达式 ? 条件成立的返回的值1 :条件不成立的返回值2
var age = 26; var beverage = (age >= 21) ? "Beer" : "Juice"; console.log(beverage); // "Beer"
8.运算符优先级
•一元运算符里面的逻辑非优先级很高
•逻辑与比逻辑或优先级高
从左到右算起
1.()圆括号的优先级最大
2. 一元运算符 ++ 、 --( ++a 优先级小于 a++ )、 ! 、+... 、-...
3. 算术运算符 **(幂) 、* 、 / 、 %(取余) 、 + 、 -
4. 比较运算符 < 、 、 >= 、 == 、 != 、=== 、!==
5. 逻辑运算符 &&(逻辑与)、|| (逻辑或)
6. 三元运算符 ? :
7. 赋值运算符 =、 += 、-= 、*= 、/= 、%=
8. 展开运算符 ...
9. 逗号运算符 ,
也可以看下表
下表按从最高到最低的优先级列出JavaScript运算符。具有相同优先级的运算符按从左至右的顺序求值。
运算符 | 描述 |
. [] () | 字段访问、数组下标、函数调用以及表达式分组 |
++ -- - ~ ! delete new typeof void | 一元运算符、返回数据类型、对象创建、未定义值 |
* / % | 乘法、除法、取模 |
+ - + | 加法、减法、字符串连接 |
> >>> | 移位 |
< >= instanceof | 小于、小于等于、大于、大于等于、instanceof |
== != === !== | 等于、不等于、严格相等、非严格相等 |
& | 按位与 |
^ | 按位异或 |
| | 按位或 |
&& | 逻辑与 |
|| | 逻辑或 |
?: | 条件 |
= oP= | 赋值、运算赋值 |
, | 多重求值 |