视频链接:https://www.bilibili.com/video/BV1ux411d75J?p=41
点击观看视频
运算符
1.运算符
运算符(operator)也被称为操作符,是用于实现赋值,比较和执行算数运算等功能的符号。
JavaScript中常用的运算符有:
- 算术运算符
- 递增和递减运算符
- 比较运算符
- 逻辑运算符
- 赋值运算符
2.算数运算符
2.1算数运算符概述
概念:算数运算使用的符号,用于执行两个变量或值的算术运算。
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 10+20=30 |
- | 减 | 30-20=10 |
* | 乘 | 10*20=200 |
/ | 除 | 20/2=10 |
% | 取余 | 返回除法的余数 9%2=1 |
2.2浮点数的精度问题
浮点数值的最高精度是17位小数,但在进行算数时其精确度远远不如整数。
//1.浮点数 算数运算里面会有问题
var result = 0.1+0.2; //结果不是0.3,而是:0.300000000000000004
console.log(0.07*100); //结果不是7,而是:7.000000000000000001
//2.我们不能直接拿着浮点数来进行比较是否相等
var num = 0.1+0.2;
console.log(num == 0.3); //false
2.3表达式和返回值
表达式:是由数字、运算符、变量等以能求得数值的有意义排列方法所得的组合
简单理解:是由数字、运算符、变量等组成的式子
//在程序中里 2=1+1 把我们右边的表达式计算完毕把返回值给左边
var num = 1+1;
3.递增和递减运算符
3.1递增和递减运算符概述
如果需要反复给数字变量添加或减去1,可以使用递增(++)和递减(–)运算符来完成。
在JS中,递增(++)和递减(–)既可以放在变量前面也可以放在变量后面。放在变量前面是我们可以称为前置递增(递减)运算符,放到变量后面是,我们称为后置递增(递减)运算符。
//1.想要一个变量自己家1 num = num+1比较麻烦
var num = 1;
num = num+1;//++num
console.log(num) //2
//2.前置递增运算符 ++写在变量前面
var num1 = 1;
++num1;//2 类似于 num1 = num1+1
//先加一 后返回值
var num2 = 2;
console.log(++num2 + 10); //13
//3.后置递增运算符 ++写在变量后面
var age = 10;
age++;//11 类似于 age= age+1
//先返回原值 后加1
var age2 = 15;
console.log(age2++ + 10); //25 15+10=25
console.log(age2);//16
3.2前++ 和后++的区别
1.前++和后++如果单独使用效果是一样的
2.前++是先加+,后返回值。后++是先返回原值,后加+1
例子:
var a= 10;
++a; //10
var b=++a +2; //11+2=13
console.log(b); //13
var c = 10;
c++; //11
var d = c++ +2; // c++ =11 11+2=13
console.log(d); //13
var e = 10;
var f = e++ + ++e; //e++ =10 e=11 ++e =12 f=10+12=22
console.log(f); //22
4.比较运算符
4.1比较运算符概述
概念:比较运算符(关系运算符)是两个数据进行比较是所使用的运算符,比较运算后,回返回一个布尔值(true/false)作为比较运算的结果。
运算符名称 | 说明 | 案例 | 结果 |
---|---|---|---|
< | 小于号 | 1<2 | true |
> | 大于号 | 1>2 | false |
>= | 大于等于号 | 2>=2 | true |
<= | 小于等于号 | 3<=2 | false |
== | 判等号(会转型) | 37=37 | true |
!= | 不等于 | 36!=36 | false |
=== | 全等 | 37===‘37’ | true |
4.2 = 小结
符号 | 作用 | 用法 |
---|---|---|
= | 赋值 | 把右边给左边 |
== | 判断 | 判断两边值是否相等(注意此时有隐式转换) |
=== | 全等 | 判断两边的值和数据类型是否完全相同 |
5.逻辑运算符
5.1逻辑运算符概述
概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。后面开发中经常用于多个条件的判断。
逻辑运算符 | 说明 | 案例 | 结果 |
---|---|---|---|
&& | 逻辑与,简称“与” and | true && false | false |
|| | 逻辑或,简称“或” or | true || false | true |
! | 逻辑非,简称“非” not | !true | false |
5.2逻辑与 &&
两边都是true才返回true,否则返回false
var res = 2>1 && 3>1 //true 2>1=true 3>1 = true,两边都是true,所以结果是true
var res2 = 2<1 && 3>1 //false 2<1=false 3>1 = true,其中一边为false,则结果是false
5.3逻辑或 ||
两边都是false才返回false,否则返回true
var res = 2<1 || 3<1 //false 2>1=false 3>1 = false,两边都是false,所以结果是false
var res2 = 2<1 || 3>1 //true 2<1=false 3>1 = true,其中一边为true,则结果是true
5.4逻辑非 !
逻辑非(!)也叫作取反符,用来取一个布尔值想反的值,如true的相反值是false
var isok = !true; //false
var isnot = !false; //true
5.5短路运算(逻辑中断)
短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值;
1 .逻辑与
- 语法:表达式1 && 表达式2
- 如果第一个表达式的值为真,则返回表达式2
- 如果第一个表达式的值为假,则返回表达式1
console.log(123 && 456) //456
//如果有空的或者否定的为假,其余是真的 0、' '、null、undefined、NaN
console.log(0 && 456) //0
console.log(0 && 1+2*4) //0
2 .逻辑或
逻辑或正好与逻辑与之相反
- 语法:表达式1 || 表达式2
- 如果第一个表达式的值为真,则返回表达式1
- 如果第一个表达式的值为假,则返回表达式2
console.log(123 || 456) //123
//如果有空的或者否定的为假,其余是真的 0、' '、null、undefined、NaN
console.log(0 || 456) //456
console.log(0 || 1+2*4 ||369) //9
6.赋值运算符
概念:用来把数据赋值给变量的运算符
赋值运算符 | 说明 | 案例 |
---|---|---|
= | 直接赋值 | var usrName = “我是值”; |
+=、-= | 加、减一个数后在赋值 | var age = 10; age+=5; //15 |
*=、/=、%= | 乘、除、取余后在赋值 | var age =2; age*=5; //10 |
var age = 10;
age +=5;//相当于age = age+5
age -=5;//相当于age = age-5
age *=5;//相当于age = age*5
7.运算符优先级
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 小括号 | () |
2 | 一元运算符 | ++ - - ! |
3 | 算术运算符 | 先* / % 后+ - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | 先 && 后 || |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
- 一元运算符里面的逻辑非优先级很高
- 逻辑与比逻辑或优先级高
//先算逻辑与 false || true && true && true &&true
console.log(4>=6 || '人'!='sdf' && !(12*2==144) && true) //true
var num =10;
//true && true
console.log(5 == num/2 && (2+2*num).toString() ==='22'); //true
//练习
var a = 3>5 && 2<7 && 1==4; //false && true && false
console.log(a); //false
var b = 3<=4 || 3>1 || 3!=2; //true || true || true
console.log(b)//true
var c = 2==='2';//false
console.log(c); //false
var d = !c || b && a; //true ||true && false
console.log(d); //true