运算符
+,-,*,/,加减乘除等都是运算符,实现赋值,比较和执行算数运算等功能的符号。
算数运算符
算数运算符使用的符号,用于执行两个变量或值的算术运算
运算符 | 描述 | 例子 |
+ | 加 | 1+1=2 |
- | 减 | 1-1=0 |
* | 乘 | 1*1=1 |
/ | 除 | 1/1=1 |
% | 取余(取模) | 5%2=1 |
注意⚠️ 浮点数 运算会有些问题。 浮点数的精度有问题,不要直接判断两个浮点数是否相等
alert(0.1 + 0.2) //运算出来的结果是:0.30000000000000004
alert(0.07 * 100) //运算出来的结果是:7.000000000000001
表达式和返回值
表达式是由数字,运算符,变量等组成的式子,例:33+33
表达式最终得到的结果就是返回值
程序中 =号的左边是返回值,右边是表达式。例:66 = 33 + 33
递增和递减运算符
递增:++
递减:--
注意⚠️ 递增和递减必须和变量配合使用 (错误示范:++1)
递增和递减可放在变量的前面或者后面,前置和后置若单独使用,返回值是一样的
如果放在变量前面为前置递增(递减),先自加(减)一,然后在返回值
var age = 10;
++age //返回值为11 age = age + 1
放在变量后面则为后置递增(递减),先返回原值,后自加一
var num = 10;
console.log(num++ + 10); //最终打印出的结果为20
console.log(num) //打印出来的结果为11
//因为js的运行时从上往下算,所以第二步算完后num进行了+1,所以第三步的num打印出来为11.
var a = 10;
var b = a++ + ++a; //最后得出来的结果是22
//a++ 先返回原值 =10 ,然后再进行+1 得出来a=11,最后++a=11+1=12,所以b = 10 + 12 =22
var a = 10;
var b = a-- + --a;
//a-- 先返回原值为10,然后再进行-1,a=9,然后--a 运算先自减,=a-1 =9-1 =8
console.log(b); //最终b的返回值是18
- 开发时,大多使用后置递增递减,并且代码独占一行,如:num++或num--
- 前置递增递减和后置递增递减可以简化代码的编写,让变量的值+1
- 单独使用时,运算结果相同
- 与其他代码联用时,执行结果会不同
- 前置:先自加一,后运算(先己后人)
- 后置:先原值运算,后自加(先人后己)
比较运算符
比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后
返回一个布尔值(true/false)作为比较运算的结果
运算符名称 | 说明 | 案例 | 结果 |
< | 小于号 | 1<2 | true |
> | 大于号 | 1>2 | false |
>= | 大于等于号 | 2>=2 | true |
<= | 小于等于号 | 3<=2 | false |
== | 判等号(会转型) | 2==2 | true |
!= | 不等号 | 2!=2 | false |
=== !== | 全等要求值和数据类型都一致 | 2==='2' | false |
注意⚠️这里的 == 运算符
console.log(1 == '1') //这里的返回值时true,因为会自动转型
符号 | 作用 | 用法 |
= | 赋值 | 把右边的给左边 |
== | 判断 | 判断两边值是否相等(注意此时有隐式转换) |
=== | 全等 | 判断两边的值和数据类型是否完全相同 |
逻辑运算符
逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值,经常用于多个条件的判断
逻辑运算符 | 说明 | 例子 |
&& | “逻辑与” 简称 “与” and | true&&false |
|| | “逻辑或” 简称 “或” or | true||false |
! | “逻辑非” 简称 “非” not | !true |
- 逻辑与 && 两侧都为true 结果才为true 只要有一侧为false 结果就为false
- 逻辑或|| 两侧都为false 则为false,只要有一侧为true,结果就为true
- 逻辑非 ! !true的结果为false——取反符
短路运算(逻辑中断)
短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值 。
逻辑与
- 表达式1 && 表达式2
- 如果第一个表达式的值为true,则返回表达式2
- 如果第一个表达式的值为 false,则返回表达式1
console.log(123 && 456) //123为true,所以返回值为表达式2即456
console.log(0 && 123) //0为false,所以返回值为表达式1即0
//如果有空的或者否定的为false,其余式真的,false: 0 '' null undefined NaN
逻辑或
- 表达式1 || 表达式2
- 如果第一个表达式的值为true,则返回表达式1
- 如果第一个表达式的值为false,则返回表达式2
console.log(123 || 456) //返回的是123
console.log(0 || 123) //返回的是123
//例子
var a = 0;
console.log(123 || a++);
console.log(a); //这里的a的返回值为0,以为短路运算,只运行到123,后面的a++未运行
赋值运算符
把数据赋值给变量的运算符
赋值运算符 | 说明 | 例子 |
= | 直接赋值 | var num = 1 |
+=,-= | 加减一个数后再赋值 | var num = 2;num += 1;//最后结果为3 |
*=,/=,%= | 乘除取模后再赋值 | var num = 2;num *= 5;//结果为10 |
运算符优先级
优先级 | 运算符 | |
1 | 小括号 | () |
2 | 一元运算符 | ++ -- ! |
3 | 算数运算符 | 先*/%后+ - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | 先&& 后|| |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
一元运算符里面的逻辑非即(!)优先级很高
逻辑与&&比逻辑或||优先级高