概念:算术运算使用的符号,用于执行两个变量或值的算术运算。
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 10 + 10 = 20 |
- | 减 | 10 - 10 = 0 |
* | 乘 | 10 * 10 = 100 |
/ | 除 | 10 / 10 = 1 |
% | 取模 | 10 % 10 = 0 |
【注意!!!】
浮点数的精度问题
浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度容易丢失。
var a = 0.1 + 0.4;
var b = 0.1 + 0.5;
console.log(a == b); //结果为false 因为a为0.6000000000000001 ;b为0.6
console.log(0.7 - 0.4); //结果:0.29999999999999993
console.log(0.9 - 0.6); //结果:0.30000000000000004
结论:
浮点数进行算术计算时精度不准确,不能直接判断两个浮点数是否相等
表达式:
是由数字、运算符、变量等以能求得数值的有意义排列方法所得的组合
简单理解:表达式是由数字、运算符、变量等组成的式子
返回值:
表达式最终都会有一个结果,返回给开发者,称为返回值
//1 + 1 就是一个表达式
console.log(1 + 1);// 2就是返回值
//在程序中不用1 + 1 = 2;程序中是2 = 1 + 1;将右边的表达式计算完毕赋值给左边
var num = 1 + 1;
consloe.log(num); //2就是返回值
当递增(++) 和 递减( – ) 运算符放置在变量前面叫做前置递增(递减)运算符;放置在变量后面叫做后置递增(递减)运算符。
【注意!!!】
递增和递减运算符必须和变量配合使用,不能是++1、1--
前置递增运算符:先自加,后返回值。
即++x运算时,是x先自加1,变为x=1,++x运算后返回值便是1
后置递增运算符:先返回原值,后自加 。
即y++运算时 先返回自加前的值,即y++返回值为0,然后再自加1,y=1
案例讲解:
var a = 10;
var b = a++ + ++a;
console.log(b);
案例解析:
a++先返回原值,即a++等于10,但a加1后变为11,之后运算++a 是指11自加1后返回,即12。所以b等于10+12=22。
小结:
单独写++num 和 num++ 结果是一样的;与其他代码一起的时候,执行结果会不一样
一般使用后置递增(递减)运算符,且代码独占一行,例如:num++ 、num--
概念:比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true / false)作为比较运算的结果。
运算符名称 | 说明 | 案例 | 结果 |
---|---|---|---|
< | 小于号 | 1<2 | true |
> | 大于号 | 1>2 | false |
>= | 大于等于号 | 2>=2 | true |
< = | 小于等于号 | 3<=2 | false |
== | 判等号 | 37==37 | true |
!= | 不等号 | 37!=37 | false |
=== | 全等号 比较两个操作数的值是否相等,同时检测它们的类型是否相同 | 37===‘37’ | false |
!== | 不全等号 比较两个操作数的值是否不相等,同时检测它们的类型是否不相同 | 37!==‘37’ | true |
=、==、===等号区别对比
符号 | 作用 | 用法 |
---|---|---|
= | 赋值 | 把右边给左边 |
== | 判断 | 判断两边值是否相等(注意隐式转换) |
=== | 全等 | 判断两边的值和数据类型是否完全相同 |
重点:隐式转换
在不同数据类型用双等号(==) 进行比较时,会有系统自动完成的一步类型转换。
> 字符串和数字比较时,字符串转换为数字,再进行比较运算。
'10' == 10 // true
> 字符串和布尔值进行比较时,二者全部转换成数字,再进行比较运算。
'1' == true // true
> 布尔值和数字进行比较时,布尔转换为数字,再进行比较运算。
0 == true // false
代码演示:
console.log(21 == '21'); //true 经过隐式转换后两值相等
console.log(21 === '21'); //false 数据类型不一致
console.log(21 != '21'); //false 经过隐式转换后两值相等,所以!=为false
console.log(21 !== '21'); //true 数据类型不一致 所以不等是true
概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。后面开发中经常用于多个条件的判断
&& “逻辑与”,简称“与” (and) 【true && true】
|| “逻辑或”,简称“或” (or) 【true || false】
! “逻辑非”,简称“非” (not) 【! true】
逻辑与 【&&】类似于"并且" :两边都是 true才返回 true,否则返回 false
逻辑或 【| |】 类似于"或者" :一边为true或两边均为true 就返回 true,否则返回 false
逻辑非 【!】 逻辑非【!】也叫作取反符,用来取一个布尔值相反的值,如 true 的相反值是 false
短路运算(逻辑中断)
&& 和 || 的结果不一定是布尔类型。比如短路运算时。
短路运算的原理:
当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值。
①逻辑与&&短路运算
表达式1 && 表达式2 && 表达式3
&& 为取假运算,从左到右依次判断,如果遇到一个假值,就返回假值,以后不再执行,否则返回最后一个真值;
②逻辑或||短路运算
表达式1 || 表达式2 || 表达式3
|| 为取真运算,从左到右依次判断,如果遇到一个真值,就返回真值,以后不再执行,否则返回最后一个假值。
概念:用来将右侧的值赋给左侧的变量的运算符。
=:直接赋值
*+=、-=:加、减 一个数 后在赋值
=、/=、%=:乘、除、取模 后在赋值
a = b 相当于常规表达式 : a = b
a += b 相当于常规表达式 : a = a + b
a -= b 相当于常规表达式 : a = a - b
a * = b 相当于常规表达式 : a = a * b
a /= b 相当于常规表达式 : a = a / b
a %= b 相当于常规表达式 : a = a % b //* 连续取模赋值是无意义的,因为结果都是一样的
三元运算符又叫条件运算符
语法:条件表达式?语句1:语句2
执行步骤:
2.如果条件的表达式的求值结果是一个非布尔值
【 注意!!!】
三元运算有返回值,可用变量承接。
逗号运算符可用于多个变量连续赋值
运算符的优先级:
1、 小括号 ()
2、 一元运算符: ++ - - !
3、 算术运算符: 先 * / % 后 + -
4、 关系运算符: > < >= <=
5、 相等运算符: == != === !==
6、 逻辑运算符: 先 && 后 ||
7、 三元运算符: 条件 ? 语句1 : 语句2
8、 赋值运算符: = += *= ……
9、 逗号运算符: ,
以上总结的知识点可能会有些错误的地方,如有更好的建议,欢迎您在评论区友善发言。